SqlServer 存贮过程操作类 (提供下载)[最后更新:2009-04-05]

      RunProc.dll是一款提供针对.NET 2.0 + MSSQL2k(经简单测试,支持sql2005)环境下的存储过程调用的封装库,可支持不同类型的Proc应用,无论是带输入参数,输出参数,还是结果集合,[暂不支持return],它都可以帮你快速搞定,返回你想到的结果,而不需要考虑数据业务编码,只需不超过10行的代码,就可以完成你要打上至少30行,甚至50,100行的代码(因为,过多的参数,使你需要建立很多的Parameter对象)
 
由于执行库及调用比较简单,在此做一下代码演示并提供RunProc.dll库的免费下载应用,无限制,在不更改代码或反向工程的前期下,可随意传播

目前该Dll版本为 1.0.0.3,目前支持SqlDataReader,DataTable数据集返回,支持的Sql数据类型:char,nchar,varchar,nvarchar,int,smallint,datetime,smalldatetime,float,text,bit.decimal其它数据类型正在更新中.


示例代码:

Proc:

ALTER   procedure  test
(
@a   varchar ( 12 ),
@b   int ,
@c   varchar ( 12 ) output,
@d   int  output
)
as
set   @c = @a + ' test ok '
set   @d = @b + 10
== 以下为了测试返回数据集
Select   *   from   table


C#
首先添加引用,将该dll加入到自已的项目中,
然后using SQL.RunProc
以下代码为没有返回任何数据集,只是单纯执行,并得到存贮过程的返回值


SqlConnection Conn  =   new  SqlConnection();  // 建立一个基本的MSSQL数据连接对象
Conn.ConnectionString  =   @" Data Source=127.0.0.1;database=Northwind;user id=sa;password=hacker; " ; // 执行连接MSSQL字符串
RunProc a  =   new  RunProc(); // 建立一个RunProc类的实例
a.Conn  =  Conn; // 把数据连接提交给RunProc
a.ProcName  =   " test " ; // 指定要查询执行的Proc的名称
a.Run( " Test " , 100 ); // 传递进去要输入的参数组,顺序于Proc定义声明的参数输入顺序一致,参数个数不限.
 //此处如果没有参数传入,可以直接a.Run();
// 以上调用完毕,
// 下面读取存贮过程的返回值,使用OutPut方法
Response.Write(a.OutPut[ " @c " +   " , "   +  a.OutPut[ " @d " ]); // 测试输出返回值,OutPut是一个集合,里面可以通过指定返回值的变量名来获得其返回值



下面代码是有数据集返回的,


SqlConnection Conn  =   new  SqlConnection();  // 建立一个基本的MSSQL数据连接对象
Conn.ConnectionString  =   @" Data Source=127.0.0.1;database=Northwind;user id=sa;password=hacker; " ; // 执行连接MSSQL字符串
RunProc a  =   new  RunProc(); // 建立一个RunProc类的实例
a.Conn  =  Conn; // 把数据连接提交给RunProc
a.ProcName  =   " test " ; // 指定要查询执行的Proc的名称
a.IsReturnReader  =   true // 此属性用于指定所执行的存储过程是否具备返回结果集,默认为false,如果修改为true,则需要执行下面注释的一行代码,传递一个委托给RunDataRead属性,委托方法为void c1(SqlDataReader r);
a.RunDataRead  =  c1; // 传递一个委托方法,无返回值,参数为SqlDataReader
a.Run( " Neo " , 100);//参数列表,不限数据类型,但顺序必需与存贮过程输入参数顺序和个数保持一致.
Response.Write(a.OutPut[ " @c " +   " , "   +  a.OutPut[ " @d " ]);

private   void  c1(SqlDataReader R) {
     
while(R.Read()){
        Response.Write (R[
"name"].ToString());
        
//读取数据表中的数据
     }

}





上面示例将同时执行,存贮过程执行,返回值,返回数据集.

RunProc属性:

Conn:将数据库连接交给runproc,执行完成后,runproc会自动关闭此连接

ProcName:存贮过程名称

IsReturnReader:指定该存贮过程是否返回SqlDataReader,默认值为false(执行不返回任何记录集的存贮过程),设定为true后,您必需委托一个处理SqlDataReader方法,该方法由RunDataRead指定,详见RunDataRead方法.

RunDataRead:委托一个处理SqlDataReader的方法,此方法只包含一个SqlDataReader类型的参数

IsReturnDataTable:指定该存贮过程是否返回DataTable,默认值为false(执行不返回任何记录集的存贮过程),设定为true后,您必需委托一个处理DataTable方法,该方法由OutDataTable指定,详见OutDataTable方法.

OutDataTable:委托一个处理DataTable的方法,此方法只包含一个DataTable类型的参数

IsReturnOutputByDataReader:设置在返回SqlDataReader的同时,是否返回Output参数值,当IsReturnReader设为true的时候,属性值会生效!默认值false!

IsExistPars:是否存在参数,包括输入输出参数,设为false时,将不对任何参数做处理.默认值为true,如果您的存贮过程不包含任何参数处理,请将该值设为true,这样会适当提升执行性能.

RunProc方法:

Run(params object[] Pars):执行runproc,参数为对应存贮过程的输入参数列表,注意个数与顺利,数据类型都必需对应!

 


该类对同时返回SqlDataReader和输出参数的处理并不好,还希望各位提出改进意见.





下载该文件

你可能感兴趣的:(sqlserver)