asp.net存储过程用法

  • Y1_132887
    了解作者
  • 3.8KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-04 05:38
    上传日期
asp.net调用存储过程的用法
存储过程用法.rar
  • 存储过程用法.txt
    11.2KB
内容介绍
①为什么要使用存储过程? 因为它比SQL语句执行快. ②存储过程是什么? 把一堆SQL语句罗在一起,还可以根据条件执行不通SQL语句.(AX写作本文时观点) ③来一个最简单的存储过程 CREATE PROCEDURE dbo.testProcedure_AX AS select userID from USERS order by userid desc 注:dbo.testProcedure_AX是你创建的存储过程名,可以改为:AXzhz等,别跟关键字冲突就行了.AS下面就是一条SQL语句,不会写SQL语句的请回避. ④我怎么在Asp.Net中调用这个存储过程? 下面黄底的这两行就够使了. public static string GetCustomerCName(ref ArrayList arrayCName,ref ArrayList arrayID) { SqlConnection con=ADConnection.createConnection(); SqlCommand cmd=new SqlCommand("testProcedure_AX",con); cmd.CommandType=CommandType.StoredProcedure; con.Open(); try { SqlDataReader dr=cmd.ExecuteReader(); while(dr.Read()) { if(dr[0].ToString()=="") { arrayCName.Add(dr[1].ToString()); } } con.Close(); return "OK!"; } catch(Exception ex) { con.Close(); return ex.ToString(); } } 注:其实就是把以前 SqlCommand cmd=new SqlCommand("select userID from USERS order by userid desc",con); 中的SQL语句替换为存储过程名,再把cmd的类型标注为CommandType.StoredProcedure(存储过程) ⑤写个带参数的存储过程吧,上面这个简单得有点惨不忍睹,不过还是蛮实用的. 参数带就带两,一个的没面子,太小家子气了. CREATE PROCEDURE dbo.AXzhz /* 这里写注释 */ @startDate varchar(16), @endDate varchar(16) AS select id from table_AX where commentDateTime>@startDate and commentDateTime<@endDate order by contentownerid DESC 注:@startDate varchar(16)是声明@startDate 这个变量,多个变量名间用【,】隔开.后面的SQL就可以使用这个变量了. ⑥我怎么在ASP.NET中调用这个带参数的存储过程? public static string GetCustomerCNameCount(string startDate,string endDate,ref DataSet ds) { SqlConnection con=ADConnection.createConnection(); //-----------------------注意这一段-------------------------------------------------------------------------------------------------------- SqlDataAdapter da=new SqlDataAdapter("AXzhz",con); para0=new SqlParameter("@startDate",startDate); para1=new SqlParameter("@endDate",endDate); da.SelectCommand.Parameters.Add(para0); da.SelectCommand.Parameters.Add(para1); da.SelectCommand.CommandType=CommandType.StoredProcedure; //------------------------------------------------------------------------------------------------------------------------------- try { con.Open(); da.Fill(ds); con.Close(); return "OK"; } catch(Exception ex) { return ex.ToString(); } } 注:把命令的参数添加进去,就OK了 ⑦我还想看看SQL命令执行成功了没有. 注意看下面三行红色的语句 CREATE PROCEDURE dbo.AXzhz /* @parameter1 用户名 @parameter2 新密码 */ @passWord nvarchar(20), @userName nvarchar(20) AS declare @err0 int update WL_user set password=@password where UserName=@userName set @err0=@@error select @err0 as err0 注:先声明一个整型变量@err0,再给其赋值为@@error(这个是系统自动给出的语句是否执行成功,0为成功,其它为失败),最后通过select把它选择出来,某位高人说可以通过Return返回,超出本人的认知范围,俺暂时不会,以后再补充吧 ⑧那怎么从后台获得这个执行成功与否的值呢? 下面这段代码可以告诉你答案: public static string GetCustomerCName() { SqlConnection con=ADConnection.createConnection(); SqlCommand cmd=new SqlCommand("AXzhz",con); cmd.CommandType=CommandType.StoredProcedure; para0=new SqlParameter("@startDate","2006-9-10"); para1=new SqlParameter("@endDate","2006-9-20"); da.SelectCommand.Parameters.Add(para0); da.SelectCommand.Parameters.Add(para1); con.Open(); try { Int32 re=(int32)cmd.ExecuteScalar(); con.Close(); if (re==0) return "OK!"; else return "false"; } catch(Exception ex) { con.Close(); return ex.ToString(); } } 注:就是通过SqlCommand的ExecuteScalar()方法取回这个值,这句话是从MSDN上找的,俺认为改成: int re=(int)cmd.ExecuteScalar(); 99%正确,现在没时间验证,期待您的测试!!! 1)执行一个没有参数的存储过程的代码如下: SqlConnection conn=new SqlConnection(“connectionString”); SqlDataAdapter da = new SqlDataAdapter(); da.selectCommand = new SqlCommand(); da.selectCommand.Connection = conn; da.selectCommand.CommandText = "NameOfProcedure"; da.selectCommand.CommandType = CommandType.StoredProcedure; (2)执行一个有参数的存储过程的代码如下 SqlConnection conn=new SqlConnection(“connectionString”); SqlDataAdapter da = new SqlDataAdapter(); da.selectCommand = new SqlCommand(); da.selectCommand.Connection = conn; da.selectCommand.CommandText = "NameOfProcedure"; da.selectCommand.CommandType = CommandType.StoredProcedure; param = new SqlParameter("@ParameterName", SqlDbType.DateTime); param.Direction = ParameterDirection.Input; param.Value = Convert.ToDateTime(inputdate); da.selectCommand.Parameters.Add(param); 若需要添加输出参数: param = new SqlParameter("@ParameterName", SqlDbType.DateTime); param.Direction = ParameterDirection.Output; param.Value = Convert.ToDateTime(inputdate); da.selectCommand.Parameters.Add(param); 若要获得参储过程的返回值: param = new SqlParameter("@ParameterName", SqlDbType.DateTime); param.Direction = ParameterDirection.ReturnValue; param.Value = Convert.ToDateTime(inputdate); da.selectCommand.Parameters.Add(param); 两种不同的存储过程调用方法 为了突出新方法的优点,首先介绍一下在.NET中调用存储过程的“官方”方法。另外,本文的所有示例程序均工作于SqlServer数据库上,其它情况类似,以后不再一一说明。本文所有例子均采用C#语言。 要在应用程序中访问数据库,一般性的步骤是:首先声明一个数据库连接SqlConnection,然后声明一个数据库命令SqlCommand,用来执行SQL语句和存储过程。有了这两个对象后,就可以根据自己的需要采用不同的执行方式达到目的。需要补充的是,不要忘记在页面上添加如下的引用语句:using System.Data.SqlClient。 就执行存储过程来说,如果执行的是第一类存储过程,那么就要用一个DataAdapter将结果填充到一个DataSet中,然后就可以使用数据网格控件将结果呈现在页面上了;如果执行的是第二和第三种存储过程,则不需要此过程,只需要根据特定的返回判定操作是否成功完成即可。 (1)执行一个没有参数的存储过程的代码如下: SqlConnection conn=new SqlConnection(“connectionString”); SqlDataAdapter da = new SqlDataAdapter(); da.selectCommand = new SqlCommand(); da.selectCommand.Connection = conn; da.selectCommand.CommandText = "NameOfProcedure"; da.selectCommand.CommandType = CommandType.StoredProcedure; 然后只要选择适当的方式执行此处过程,用于不同的目的即可。 (2)执行一个有参数的存储过程的代码如下(我们可以将调用存储过程的函数声明为ExeProcedure(string inputdate)): SqlConnection conn=new SqlConnection(“connectionString”); SqlDataAdapter da = new SqlDataAdapter(); da.selectCommand = new SqlCommand(); da.selectCommand.Connection = conn; da.selectCommand.CommandText = "NameOfProcedure"; da.selectCommand.CommandType = CommandType.StoredProcedure; (以上代码相同,以下为要添加的代码) param = new SqlParameter("@ParameterName", SqlDbType.DateTime); param.Direction = ParameterDirection.Input; param.Value = Convert.ToDateTime(inputdate); da.selectCommand.Parameters.Add(pa
评论
    相关推荐