首页 > 开发 > 综合 > 正文

C#调用存储过程简单完整例子

2024-07-21 02:26:36
字体:
来源:转载
供稿:网友


create proc p_test
@name varchar(20),
@rowcount int output
as
begin
 select * from t_customer where [email protected]
 set  @[email protected]@rowcount
end
go
----------------------------------------------------------------------------------------
--存储过程调用如下:
----------------------------------------------------------------------------------------
declare @i int
exec p_test 'a',@i output
select @i
--结果
/*
name       address    tel                 
---------- ---------- --------------------
a          address    telphone
(所影响的行数为 1 行)

           
-----------
1

(所影响的行数为 1 行)
*/
----------------------------------------------------------------------------------------
--dotnet 部分(c#)
--webconfig 文件:
----------------------------------------------------------------------------------------
......
 </system.web>
 
   <!-- 数据库连接字符串
   -->
 <appsettings>
      <add key="connectstring" value="server=(local);user id=sa;password=;database=test" />
</appsettings>
  
</configuration>
----------------------------------------------------------------------------------------
--c#代码:(用到两个测试控件,datagrid1(用于显示绑定结果集合),lable(用于显示存储过程返回单值)
----------------------------------------------------------------------------------------
//添加数据库引用
using system.data.sqlclient;
......
 private void page_load(object sender, system.eventargs e)
  {
   // 在此处放置用户代码以初始化页面
   string dbconnstr;
   dataset mydataset=new dataset();
   system.data.sqlclient.sqldataadapter dataadapter=new system.data.sqlclient.sqldataadapter();
   dbconnstr=system.configuration.configurationsettings.appsettings["connectstring"];
   system.data.sqlclient.sqlconnection myconnection = new system.data.sqlclient.sqlconnection(dbconnstr);
   if (myconnection.state!=connectionstate.open)
   {
    myconnection.open();
   }  
   system.data.sqlclient.sqlcommand mycommand = new system.data.sqlclient.sqlcommand("p_test",myconnection);
   mycommand.commandtype=commandtype.storedprocedure;
   //添加输入查询参数、赋予值
   mycommand.parameters.add("@name",sqldbtype.varchar);
   mycommand.parameters["@name"].value ="a";

   //添加输出参数
   mycommand.parameters.add("@rowcount",sqldbtype.int);
   mycommand.parameters["@rowcount"].direction=parameterdirection.output;


   mycommand.executenonquery();
   dataadapter.selectcommand = mycommand;

   if (mydataset!=null)
   {
     dataadapter.fill(mydataset,"table");
   }
  
   datagrid1.datasource=mydataset;
   datagrid1.databind();
   //得到存储过程输出参数
   label1.text=mycommand.parameters["@rowcount"].value.tostring();

   if (myconnection.state == connectionstate.open)
   {
    myconnection.close();
   }

  }
----------------------------------------------------------------------------------------
运行以上代码即可(返回记录集合和存储过程返回值)


 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表