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和输出参数的处理并不好,还希望各位提出改进意见.
下载该文件