SqlServer 存贮过程操作类
转 http://www.cnblogs.com/hcl0208/archive/2007/11/09/954160.html
RunProc.dll是一款提供针对.NET 2.0 + MSSQL2k(经简单测试,支持sql2005)环境下的存储过程调用的封装库,可支持不同类型的Proc应用,无论是带输入参数,输出参数,还是结果集合,[暂不支持return],它都可以帮你快速搞定,返回你想到的结果,而不需要考虑数据业务编码,只需不超过10行的代码,就可以完成你要打上至少30行,甚至50,100行的代码(因为,过多的参数,使你需要建立很多的Parameter对象)
目前该Dll版本为1.0.0.3,目前支持SqlDataReader,DataTable数据集返回,支持的Sql数据类型:char,nchar,varchar,nvarchar,int,smallint,datetime,smalldatetime,float,text,bit.decimal其它数据类型正在更新中.
示例代码:
Proc:
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
C#
首先添加引用,将该dll加入到自已的项目中,
然后using SQL.RunProc
以下代码为没有返回任何数据集,只是单纯执行,并得到存贮过程的返回值
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
//此处如果没有参数传入,可以直接a.Run();
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
下面代码是有数据集返回的,
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
上面示例将同时执行,存贮过程执行,返回值,返回数据集.
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和输出参数的处理并不好,还希望各位提出改进意见.