C#调用存储过程详解(带返回值、参数输入输出等)
本文实例讲述了c#调用存储过程的方法。分享给大家供大家参考,具体如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | create procedure [dbo].[getnamebyid] @studentid varchar(8), @studentname nvarchar(50) output as begin select @studentname=studentname from student where studentid=@studentid if @@error<>0 return -1 else return 0 end |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | using (sqlconnection conn = new sqlconnection(connstr)) { try { sqlcommand cmd = new sqlcommand( "getnamebyid" , conn); cmd.commandtype = commandtype.storedprocedure; cmd.parameters.addwithvalue( "@studentid" , "09888888" ); //给输入参数赋值 sqlparameter paroutput =cmd.parameters.add( "@studentname" , sqldbtype.nvarchar, 50); //定义输出参数 paroutput.direction = parameterdirection.output; //参数类型为output sqlparameter parreturn = new sqlparameter( "@return" , sqldbtype. int ); parreturn.direction = parameterdirection.returnvalue; //参数类型为returnvalue cmd.parameters.add(parreturn); conn.open(); cmd.executenonquery(); messagebox.show(paroutput.value.tostring()); //显示输出参数的值 messagebox.show(parreturn.value.tostring()); //显示返回值 } catch (system.exception ex) { messagebox.show(ex.message); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | create procedure addordertran @country nvarchar(100), @adds nvarchar(100), @ynames nvarchar(100), @pids nvarchar(100), @cellp nvarchar(100), @cphone nvarchar(100), @amounts nvarchar(100), @cartnumber nvarchar(100) as declare @id int begin transaction insert into orders(order_country,order_adress,order_username,order_postid,cells,order_phone,total_pay,cartnumber,ispay) values (@country,@adds,@ynames,@pids,@cellp,@cphone,@amounts,@cartnumber, '0' ) select @id=@@identity insert into orders_item (ordernumber,productsid,products_color,products_price,order_qty,item_total) select @id,carts_item.productsid,carts_item.products_color,carts_item.products_price,carts_item.item_qty,carts_item.total_pay from carts_item where carts_item.cartnumber=@cartnumber delete carts_item where cartnumber=@cartnumber if @@error <> 0 --发生错误 begin rollback transaction return 0 end else begin commit transaction return @id --执行成功 end |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #region 执行存储过程 sqlparameter[] param = new sqlparameter[] { new sqlparameter( "@country" ,country), new sqlparameter( "@adds" ,adds), new sqlparameter( "@ynames" ,ynames), new sqlparameter( "@pids" , pids), new sqlparameter( "@cellp" ,cellp), new sqlparameter( "@cphone" , cphone), new sqlparameter( "@amounts" ,amounts), new sqlparameter( "@cartnumber" ,cartnumber), new sqlparameter( "@return" ,sqldbtype. int ) }; param[8].direction = parameterdirection.returnvalue; mscl.sqlhelper.runprocedure( "addordertran" , param); object obj = param[8].value; //接受返回值 //string connstr = system.configuration.configurationmanager.appsettings["constr"].tostring(); //using (sqlconnection conn = new sqlconnection(connstr)) //{ // conn.open(); // sqlcommand cmd = new sqlcommand("addordertran", conn); // cmd.commandtype = commandtype.storedprocedure; // sqlparameter para1 = new sqlparameter("@country", country); // para1.direction = parameterdirection.input; //参数方向 为输入参数 // cmd.parameters.add(para1); // sqlparameter para2 = new sqlparameter("@adds", adds); // para2.direction = parameterdirection.input; // cmd.parameters.add(para2); // sqlparameter para3 = new sqlparameter("@ynames", ynames); // para3.direction = parameterdirection.input; // cmd.parameters.add(para3); // sqlparameter para4 = new sqlparameter("@pids", pids); // para4.direction = parameterdirection.input; // cmd.parameters.add(para4); // sqlparameter para5 = new sqlparameter("@cellp", cellp); // para5.direction = parameterdirection.input; // cmd.parameters.add(para5); // sqlparameter para6 = new sqlparameter("@cphone", cphone); // para6.direction = parameterdirection.input; // cmd.parameters.add(para6); // sqlparameter para7 = new sqlparameter("@amounts", amounts); // para7.direction = parameterdirection.input; // cmd.parameters.add(para7); // sqlparameter para8 = new sqlparameter("@cartnumber", cartnumber); // para8.direction = parameterdirection.input; // cmd.parameters.add(para8); // sqlparameter parareturn = new sqlparameter("@return", sqldbtype.int); // parareturn.direction = parameterdirection.returnvalue; //参数方向 为返回参数 // cmd.parameters.add(parareturn); // cmd.executenonquery(); // object obj = parareturn; // if (obj.tostring() == "0") // { // //存储过程执行失败 // } // else // { // //成功 // } //} //#endregion |
本文的数据库用的是sql server自带数据northwind
1.只返回单一记录集的存储过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | sqlconnection sqlconn = new sqlconnection(conn); sqlcommand cmd = new sqlcommand(); // 设置sql连接 cmd.connection = sqlconn; // 如果执行语句 cmd.commandtext = "categoriestest1" ; // 指定执行语句为存储过程 cmd.commandtype = commandtype.storedprocedure; sqldataadapter dp = new sqldataadapter(cmd); dataset ds = new dataset(); // 填充dataset dp.fill(ds); // 以下是显示效果 gridview1.datasource = ds; gridview1.databind(); |
存储过程categoriestest1
1 2 3 4 5 | create procedure categoriestest1 as select * from categories go |
2. 没有输入输出的存储过程
1 2 3 4 5 6 7 8 9 | sqlconnection sqlconn = new sqlconnection(conn); sqlcommand cmd = new sqlcommand(); cmd.connection = sqlconn; cmd.commandtext = "categoriestest2" ; cmd.commandtype = commandtype.storedprocedure; sqlconn.open(); // 执行并显示影响行数 label1.text = cmd.executenonquery().tostring(); sqlconn.close(); |
存储过程categoriestest2
1 2 3 4 5 | create procedure categoriestest2 as insert into dbo.categories (categoryname,[description],[picture]) values ( 'test1' , 'test1' , null ) go |
3. 有返回值的存储过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | sqlconnection sqlconn = new sqlconnection(conn); sqlcommand cmd = new sqlcommand(); cmd.connection = sqlconn; cmd.commandtext = "categoriestest3" ; cmd.commandtype = commandtype.storedprocedure; // 创建参数 idataparameter[] parameters = { new sqlparameter( "rval" , sqldbtype. int ,4) }; // 将参数类型设置为 返回值类型 parameters[0].direction = parameterdirection.returnvalue; // 添加参数 cmd.parameters.add(parameters[0]); sqlconn.open(); // 执行存储过程并返回影响的行数 label1.text = cmd.executenonquery().tostring(); sqlconn.close(); // 显示影响的行数和返回值 label1.text += "-" + parameters[0].value.tostring() ; |
存储过程categoriestest3
1 2 3 4 5 6 7 | create procedure categoriestest3 as insert into dbo.categories (categoryname,[description],[picture]) values ( 'test1' , 'test1' , null ) return @@rowcount go |
4. 有输入参数和输出参数的存储过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | sqlconnection sqlconn = new sqlconnection(conn); sqlcommand cmd = new sqlcommand(); cmd.connection = sqlconn; cmd.commandtext = "categoriestest4" ; cmd.commandtype = commandtype.storedprocedure; // 创建参数 idataparameter[] parameters = { new sqlparameter( "@id" , sqldbtype. int ,4) , new sqlparameter( "@categoryname" , sqldbtype.nvarchar,15) , }; // 设置参数类型 parameters[0].direction = parameterdirection.output; // 设置为输出参数 parameters[1].value = "testcategoryname" ; // 添加参数 cmd.parameters.add(parameters[0]); cmd.parameters.add(parameters[1]); sqlconn.open(); // 执行存储过程并返回影响的行数 label1.text = cmd.executenonquery().tostring(); sqlconn.close(); // 显示影响的行数和输出参数 label1.text += "-" + parameters[0].value.tostring() ; |
存储过程categoriestest4
1 2 3 4 5 6 7 8 9 | create procedure categoriestest4 @id int output, @categoryname nvarchar(15) as insert into dbo.categories (categoryname,[description],[picture]) values (@categoryname, 'test1' , null ) set @id = @@identity go |
5. 同时具有返回值、输入参数、输出参数的存储过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | sqlconnection sqlconn = new sqlconnection(conn); sqlcommand cmd = new sqlcommand(); cmd.connection = sqlconn; cmd.commandtext = "categoriestest5" ; cmd.commandtype = commandtype.storedprocedure; // 创建参数 idataparameter[] parameters = { new sqlparameter( "@id" , sqldbtype. int ,4) , new sqlparameter( "@categoryname" , sqldbtype.nvarchar,15) , new sqlparameter( "rval" , sqldbtype. int ,4) }; // 设置参数类型 parameters[0].direction = parameterdirection.output; // 设置为输出参数 parameters[1].value = "testcategoryname" ; // 给输入参数赋值 parameters[2].direction = parameterdirection.returnvalue; // 设置为返回值 // 添加参数 cmd.parameters.add(parameters[0]); cmd.parameters.add(parameters[1]); cmd.parameters.add(parameters[2]); sqlconn.open(); // 执行存储过程并返回影响的行数 label1.text = cmd.executenonquery().tostring(); sqlconn.close(); // 显示影响的行数,输出参数和返回值 label1.text += "-" + parameters[0].value.tostring() + "-" + parameters[2].value.tostring(); |
存储过程categoriestest5
1 2 3 4 5 6 7 8 9 10 | create procedure categoriestest5 @id int output, @categoryname nvarchar(15) as insert into dbo.categories (categoryname,[description],[picture]) values (@categoryname, 'test1' , null ) set @id = @@identity return @@rowcount go |
6. 同时返回参数和记录集的存储过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | sqlconnection sqlconn = new sqlconnection(conn); sqlcommand cmd = new sqlcommand(); cmd.connection = sqlconn; cmd.commandtext = "categoriestest6" ; cmd.commandtype = commandtype.storedprocedure; // 创建参数 idataparameter[] parameters = { new sqlparameter( "@id" , sqldbtype. int ,4) , new sqlparameter( "@categoryname" , sqldbtype.nvarchar,15) , new sqlparameter( "rval" , sqldbtype. int ,4) // 返回值 }; // 设置参数类型 parameters[0].direction = parameterdirection.output; // 设置为输出参数 parameters[1].value = "testcategoryname" ; // 给输入参数赋值 parameters[2].direction = parameterdirection.returnvalue; // 设置为返回值 // 添加参数 cmd.parameters.add(parameters[0]); cmd.parameters.add(parameters[1]); cmd.parameters.add(parameters[2]); sqldataadapter dp = new sqldataadapter(cmd); dataset ds = new dataset(); // 填充dataset dp.fill(ds); // 显示结果集 gridview1.datasource = ds.tables[0]; gridview1.databind(); label1.text = "" ; // 显示输出参数和返回值 label1.text += parameters[0].value.tostring() + "-" + parameters[2].value.tostring(); |
存储过程categoriestest6
1 2 3 4 5 6 7 8 9 10 11 | create procedure categoriestest6 @id int output, @categoryname nvarchar(15) as insert into dbo.categories (categoryname,[description],[picture]) values (@categoryname, 'test1' , null ) set @id = @@identity select * from categories return @@rowcount go |
7. 返回多个记录集的存储过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | sqlconnection sqlconn = new sqlconnection(conn); sqlcommand cmd = new sqlcommand(); cmd.connection = sqlconn; cmd.commandtext = "categoriestest7" ; cmd.commandtype = commandtype.storedprocedure; sqldataadapter dp = new sqldataadapter(cmd); dataset ds = new dataset(); // 填充dataset dp.fill(ds); // 显示结果集1 gridview1.datasource = ds.tables[0]; gridview1.databind(); // 显示结果集2 gridview2.datasource = ds.tables[1]; gridview2.databind(); |
存储过程categoriestest7
1 2 3 4 5 | create procedure categoriestest7 as select * from categories select * from categories go |
更多关于c#相关内容感兴趣的读者可查看本站专题:《c#常见控件用法教程》、《winform控件用法总结》、《c#数据结构与算法教程》、《c#面向对象程序设计入门教程》及《c#程序设计之线程使用技巧总结》
希望本文所述对大家c#程序设计有所帮助。
本文实例讲述了c#调用存储过程的方法。分享给大家供大家参考,具体如下:
01 |
create procedure [dbo].[getnamebyid] |
02 |
@studentid varchar (8), |
03 |
@studentname nvarchar(50) output |
04 |
as |
05 |
begin |
06 |
select @studentname=studentname from student |
07 |
where studentid=@studentid |
08 |
if @@error<>0 |
09 |
return -1 |
10 |
else |
11 |
return 0 |
12 |
end |
01 |
using (sqlconnection conn = new sqlconnection(connstr)) |
02 |
{ |
03 |
try |
04 |
{ |
05 |
sqlcommand cmd = new sqlcommand( "getnamebyid" , conn); |
06 |
cmd.commandtype = commandtype.storedprocedure; |
07 |
cmd.parameters.addwithvalue( "@studentid" , "09888888" ); //给输入参数赋值 |
08 |
sqlparameter paroutput =cmd.parameters.add( "@studentname" , sqldbtype.nvarchar, 50); //定义输出参数 |
09 |
paroutput.direction = parameterdirection.output; //参数类型为output |
10 |
sqlparameter parreturn = new sqlparameter( "@return" , sqldbtype. int ); |
11 |
parreturn.direction = parameterdirection.returnvalue; //参数类型为returnvalue |
12 |
cmd.parameters.add(parreturn); |
13 |
conn.open(); |
14 |
cmd.executenonquery(); |
15 |
messagebox.show(paroutput.value.tostring()); //显示输出参数的值 |
16 |
messagebox.show(parreturn.value.tostring()); //显示返回值 |
17 |
} |
18 |
catch (system.exception ex) |
19 |
{ |
20 |
messagebox.show(ex.message); |
21 |
} |
22 |
} |
01 |
create procedure addordertran |
02 |
@country nvarchar(100), |
03 |
@adds nvarchar(100), |
04 |
@ynames nvarchar(100), |
05 |
@pids nvarchar(100), |
06 |
@cellp nvarchar(100), |
07 |
@cphone nvarchar(100), |
08 |
@amounts nvarchar(100), |
09 |
@cartnumber nvarchar(100) |
10 |
as |
11 |
declare @id int |
12 |
begin transaction |
13 |
insert into orders(order_country,order_adress,order_username,order_postid,cells,order_phone,total_pay,cartnumber,ispay) |
14 |
values (@country,@adds,@ynames,@pids,@cellp,@cphone,@amounts,@cartnumber, '0' ) |
15 |
select @id=@@identity |
16 |
insert into orders_item (ordernumber,productsid,products_color,products_price,order_qty,item_total) |
17 |
select @id,carts_item.productsid,carts_item.products_color,carts_item.products_price,carts_item.item_qty,carts_item.total_pay |
18 |
from carts_item where carts_item.cartnumber=@cartnumber |
19 |
delete carts_item where cartnumber=@cartnumber |
20 |
if @@error <> 0 --发生错误 |
21 |
begin |
22 |
rollback transaction |
23 |
return 0 |
24 |
end |
25 |
else |
26 |
begin |
27 |
commit transaction |
28 |
return @id --执行成功 |
29 |
end |
01 |
#region 执行存储过程 |
02 |
sqlparameter[] param = new sqlparameter[] |
03 |
{ |
04 |
new sqlparameter( "@country" ,country), |
05 |
new sqlparameter( "@adds" ,adds), |
06 |
new sqlparameter( "@ynames" ,ynames), |
07 |
new sqlparameter( "@pids" , pids), |
08 |
new sqlparameter( "@cellp" ,cellp), |
09 |
new sqlparameter( "@cphone" , cphone), |
10 |
new sqlparameter( "@amounts" ,amounts), |
11 |
new sqlparameter( "@cartnumber" ,cartnumber), |
12 |
new sqlparameter( "@return" ,sqldbtype. int ) |
13 |
}; |
14 |
param[8].direction = parameterdirection.returnvalue; |
15 |
mscl.sqlhelper.runprocedure( "addordertran" , param); |
16 |
object obj = param[8].value; //接受返回值 |
17 |
//string connstr = system.configuration.configurationmanager.appsettings["constr"].tostring(); |
18 |
//using (sqlconnection conn = new sqlconnection(connstr)) |
19 |
//{ |
20 |
// conn.open(); |
21 |
// sqlcommand cmd = new sqlcommand("addordertran", conn); |
22 |
// cmd.commandtype = commandtype.storedprocedure; |
23 |
// sqlparameter para1 = new sqlparameter("@country", country); |
24 |
// para1.direction = parameterdirection.input; //参数方向 为输入参数 |
25 |
// cmd.parameters.add(para1); |
26 |
// sqlparameter para2 = new sqlparameter("@adds", adds); |
27 |
// para2.direction = parameterdirection.input; |
28 |
// cmd.parameters.add(para2); |
29 |
// sqlparameter para3 = new sqlparameter("@ynames", ynames); |
30 |
// para3.direction = parameterdirection.input; |
31 |
// cmd.parameters.add(para3); |
32 |
// sqlparameter para4 = new sqlparameter("@pids", pids); |
33 |
// para4.direction = parameterdirection.input; |
34 |
// cmd.parameters.add(para4); |
35 |
// sqlparameter para5 = new sqlparameter("@cellp", cellp); |
36 |
// para5.direction = parameterdirection.input; |
37 |
// cmd.parameters.add(para5); |
38 |
// sqlparameter para6 = new sqlparameter("@cphone", cphone); |
39 |
// para6.direction = parameterdirection.input; |
40 |
// cmd.parameters.add(para6); |
41 |
// sqlparameter para7 = new sqlparameter("@amounts", amounts); |
42 |
// para7.direction = parameterdirection.input; |
43 |
// cmd.parameters.add(para7); |
44 |
// sqlparameter para8 = new sqlparameter("@cartnumber", cartnumber); |
45 |
// para8.direction = parameterdirection.input; |
46 |
// cmd.parameters.add(para8); |
47 |
// sqlparameter parareturn = new sqlparameter("@return", sqldbtype.int); |
48 |
// parareturn.direction = parameterdirection.returnvalue; //参数方向 为返回参数 |
49 |
// cmd.parameters.add(parareturn); |
50 |
// cmd.executenonquery(); |
51 |
// object obj = parareturn; |
52 |
// if (obj.tostring() == "0") |
53 |
// { |
54 |
// //存储过程执行失败 |
55 |
// } |
56 |
// else |
57 |
// { |
58 |
// //成功 |
59 |
// } |
60 |
//} |
61 |
//#endregion |
本文的数据库用的是sql server自带数据northwind
1.只返回单一记录集的存储过程
01 |
sqlconnection sqlconn = new sqlconnection(conn); |
02 |
sqlcommand cmd = new sqlcommand(); |
03 |
// 设置sql连接 |
04 |
cmd.connection = sqlconn; |
05 |
// 如果执行语句 |
06 |
cmd.commandtext = "categoriestest1" ; |
07 |
// 指定执行语句为存储过程 |
08 |
cmd.commandtype = commandtype.storedprocedure; |
09 |
sqldataadapter dp = new sqldataadapter(cmd); |
10 |
dataset ds = new dataset(); |
11 |
// 填充dataset |
12 |
dp.fill(ds); |
13 |
// 以下是显示效果 |
14 |
gridview1.datasource = ds; |
15 |
gridview1.databind(); |
存储过程categoriestest1
1 |
create procedure categoriestest1 |
2 |
as |
3 |
select * |
4 |
from categories |
5 |
go |
2. 没有输入输出的存储过程
1 |
sqlconnection sqlconn = new sqlconnection(conn); |
2 |
sqlcommand cmd = new sqlcommand(); |
3 |
cmd.connection = sqlconn; |
4 |
cmd.commandtext = "categoriestest2" ; |
5 |
cmd.commandtype = commandtype.storedprocedure; |
6 |
sqlconn.open(); |
7 |
// 执行并显示影响行数 |
8 |
label1.text = cmd.executenonquery().tostring(); |
9 |
sqlconn.close(); |
存储过程categoriestest2
1 |
create procedure categoriestest2 as |
2 |
insert into dbo.categories |
3 |
(categoryname,[description],[picture]) |
4 |
values ( 'test1' , 'test1' , null ) |
5 |
go |
3. 有返回值的存储过程
01 |
sqlconnection sqlconn = new sqlconnection(conn); |
02 |
sqlcommand cmd = new sqlcommand(); |
03 |
cmd. connection = sqlconn; |
04 |
cmd.commandtext = "categoriestest3" ; |
05 |
cmd.commandtype = commandtype.storedprocedure; |
06 |
// 创建参数 |
07 |
idataparameter[] parameters = { |
08 |
new sqlparameter( "rval" , sqldbtype. int ,4) |
09 |
}; |
10 |
// 将参数类型设置为 返回值类型 |
11 |
parameters[0].direction = parameterdirection.returnvalue; |
12 |
// 添加参数 |
13 |
cmd.parameters. add (parameters[0]); |
14 |
sqlconn. open (); |
15 |
// 执行存储过程并返回影响的行数 |
16 |
label1.text = cmd.executenonquery().tostring(); |
17 |
sqlconn. close (); |
18 |
// 显示影响的行数和返回值 |
19 |
label1.text += "-" + parameters[0].value.tostring() ; |
存储过程categoriestest3
1 |
create procedure categoriestest3 |
2 |
as |
3 |
insert into dbo.categories |
4 |
(categoryname,[description],[picture]) |
5 |
values ( 'test1' , 'test1' , null ) |
6 |
return @@rowcount |
7 |
go |
4. 有输入参数和输出参数的存储过程
01 |
sqlconnection sqlconn = new sqlconnection(conn); |
02 |
sqlcommand cmd = new sqlcommand(); |
03 |
cmd.connection = sqlconn; |
04 |
cmd.commandtext = "categoriestest4" ; |
05 |
cmd.commandtype = commandtype.storedprocedure; |
06 |
// 创建参数 |
07 |
idataparameter[] parameters = { |
08 |
new sqlparameter( "@id" , sqldbtype. int ,4) , |
09 |
new sqlparameter( "@categoryname" , sqldbtype.nvarchar,15) , |
10 |
}; |
11 |
// 设置参数类型 |
12 |
parameters[0].direction = parameterdirection.output; // 设置为输出参数 |
13 |
parameters[1].value = "testcategoryname" ; |
14 |
// 添加参数 |
15 |
cmd.parameters.add(parameters[0]); |
16 |
cmd.parameters.add(parameters[1]); |
17 |
sqlconn.open(); |
18 |
// 执行存储过程并返回影响的行数 |
19 |
label1.text = cmd.executenonquery().tostring(); |
20 |
sqlconn.close(); |
21 |
// 显示影响的行数和输出参数 |
22 |
label1.text += "-" + parameters[0].value.tostring() ; |
存储过程categoriestest4
1 |
create procedure categoriestest4 |
2 |
@id int output , |
3 |
@categoryname nvarchar(15) |
4 |
as |
5 |
insert into dbo.categories |
6 |
(categoryname,[description],[picture]) |
7 |
values (@categoryname, 'test1' , null ) |
8 |
set @id = @@identity |
9 |
go |
5. 同时具有返回值、输入参数、输出参数的存储过程
01 |
sqlconnection sqlconn = new sqlconnection(conn); |
02 |
sqlcommand cmd = new sqlcommand(); |
03 |
cmd. connection = sqlconn; |
04 |
cmd.commandtext = "categoriestest5" ; |
05 |
cmd.commandtype = commandtype.storedprocedure; |
06 |
// 创建参数 |
07 |
idataparameter[] parameters = { |
08 |
new sqlparameter( "@id" , sqldbtype. int ,4) , |
09 |
new sqlparameter( "@categoryname" , sqldbtype.nvarchar,15) , |
10 |
new sqlparameter( "rval" , sqldbtype. int ,4) |
11 |
}; |
12 |
// 设置参数类型 |
13 |
parameters[0].direction = parameterdirection. output ; // 设置为输出参数 |
14 |
parameters[1].value = "testcategoryname" ; // 给输入参数赋值 |
15 |
parameters[2].direction = parameterdirection.returnvalue; // 设置为返回值 |
16 |
// 添加参数 |
17 |
cmd.parameters. add (parameters[0]); |
18 |
cmd.parameters. add (parameters[1]); |
19 |
cmd.parameters. add (parameters[2]); |
20 |
sqlconn. open (); |
21 |
// 执行存储过程并返回影响的行数 |
22 |
label1.text = cmd.executenonquery().tostring(); |
23 |
sqlconn. close (); |
24 |
// 显示影响的行数,输出参数和返回值 |
25 |
label1.text += "-" + parameters[0].value.tostring() + "-" + parameters[2].value.tostring(); |
存储过程categoriestest5
01 |
create procedure categoriestest5 |
02 |
@id int output , |
03 |
@categoryname nvarchar(15) |
04 |
as |
05 |
insert into dbo.categories |
06 |
(categoryname,[description],[picture]) |
07 |
values (@categoryname, 'test1' , null ) |
08 |
set @id = @@identity |
09 |
return @@rowcount |
10 |
go |
6. 同时返回参数和记录集的存储过程
01 |
sqlconnection sqlconn = new sqlconnection(conn); |
02 |
sqlcommand cmd = new sqlcommand(); |
03 |
cmd.connection = sqlconn; |
04 |
cmd.commandtext = "categoriestest6" ; |
05 |
cmd.commandtype = commandtype.storedprocedure; |
06 |
// 创建参数 |
07 |
idataparameter[] parameters = { |
08 |
new sqlparameter( "@id" , sqldbtype. int ,4) , |
09 |
new sqlparameter( "@categoryname" , sqldbtype.nvarchar,15) , |
10 |
new sqlparameter( "rval" , sqldbtype. int ,4) // 返回值 |
11 |
}; |
12 |
// 设置参数类型 |
13 |
parameters[0].direction = parameterdirection.output; // 设置为输出参数 |
14 |
parameters[1].value = "testcategoryname" ; // 给输入参数赋值 |
15 |
parameters[2].direction = parameterdirection.returnvalue; // 设置为返回值 |
16 |
// 添加参数 |
17 |
cmd.parameters.add(parameters[0]); |
18 |
cmd.parameters.add(parameters[1]); |
19 |
cmd.parameters.add(parameters[2]); |
20 |
sqldataadapter dp = new sqldataadapter(cmd); |
21 |
dataset ds = new dataset(); |
22 |
// 填充dataset |
23 |
dp.fill(ds); |
24 |
// 显示结果集 |
25 |
gridview1.datasource = ds.tables[0]; |
26 |
gridview1.databind(); |
27 |
label1.text = "" ; |
28 |
// 显示输出参数和返回值 |
29 |
label1.text += parameters[0].value.tostring() + "-" + parameters[2].value.tostring(); |
存储过程categoriestest6
01 |
create procedure categoriestest6 |
02 |
@id int output , |
03 |
@categoryname nvarchar(15) |
04 |
as |
05 |
insert into dbo.categories |
06 |
(categoryname,[description],[picture]) |
07 |
values (@categoryname, 'test1' , null ) |
08 |
set @id = @@identity |
09 |
select * from categories |
10 |
return @@rowcount |
11 |
go |
7. 返回多个记录集的存储过程
01 |
sqlconnection sqlconn = new sqlconnection(conn); |
02 |
sqlcommand cmd = new sqlcommand(); |
03 |
cmd.connection = sqlconn; |
04 |
cmd.commandtext = "categoriestest7" ; |
05 |
cmd.commandtype = commandtype.storedprocedure; |
06 |
sqldataadapter dp = new sqldataadapter(cmd); |
07 |
dataset ds = new dataset(); |
08 |
// 填充dataset |
09 |
dp.fill(ds); |
10 |
// 显示结果集1 |
11 |
gridview1.datasource = ds.tables[0]; |
12 |
gridview1.databind(); |
13 |
// 显示结果集2 |
14 |
gridview2.datasource = ds.tables[1]; |
15 |
gridview2.databind(); |
存储过程categoriestest7
1 |
create procedure categoriestest7 |
2 |
as |
3 |
select * from categories |
4 |
select * from categories |
5 |
go |
更多关于c#相关内容感兴趣的读者可查看本站专题:《c#常见控件用法教程》、《winform控件用法总结》、《c#数据结构与算法教程》、《c#面向对象程序设计入门教程》及《c#程序设计之线程使用技巧总结》
希望本文所述对大家c#程序设计有所帮助。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?