偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何在C#中使用存儲過程(SQL Server 2000)

開發(fā) 后端
本文以Sql Server2000為例,示例數(shù)據(jù)庫為china,表為test,來說明以C#中使用存儲過程的方法。

要在C#中使用存儲過程,首先看看test表的創(chuàng)建sql語句:

  1. create table test55  
  2. (  
  3. uid int identity(1,1),  
  4. class1 varchar(20),  
  5. class2 varchar(20),  
  6. uname varchar(20),  
  7. birth smalldatetime,  
  8. meno varchar(50)  
  9. )  
  10.  
  11. alter table test55  
  12. add constraint primary_id primary key(uid)  

創(chuàng)建一個有輸入、輸出、返回值參數(shù)的存儲過程:

create proc proc_out @uid int,@output varchar(200) output

as

--select結(jié)果集

select * from test where uid>@uid

--對輸出參數(shù)進行賦值

set @output='記錄總數(shù):'+convert(varchar(10),(select count(*) from test))

--使用return,給存儲過程一個返回值。

return 200;

go

在C#中使用存儲過程:

使用帶有參數(shù)的sql語句

  1. private void sql_param()  
  2.   {  
  3.  
  4.   SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");  
  5.     
  6.   //在sql語句當中引入了@myid參數(shù)  
  7.   string sql="select * from test where uid>@myid";  
  8.   SqlCommand comm=new SqlCommand(sql,conn);  
  9.            
  10.   //使用comm的Parameters屬性的add方法,對上述的@myid參數(shù)進行定義和賦值  
  11.   //SqlDbType類提供了與SqlServer數(shù)據(jù)類型一致的數(shù)據(jù)庫類型  
  12.   SqlParameter sp=comm.Parameters.Add("@myid",SqlDbType.Int);  
  13.   sp.Value=10;//對輸入?yún)?shù)賦值  
  14.       
  15.   //Command對象默認的執(zhí)行方式為Text,不寫下句亦可  
  16.   comm.CommandType=CommandType.Text;  
  17.     
  18.   //將Command對象作為DataAdapter的參數(shù)傳進  
  19.   SqlDataAdapter da=new SqlDataAdapter(comm);  
  20.   DataSet ds=new DataSet();  
  21.   da.Fill(ds);  
  22.  
  23.         //綁定數(shù)據(jù)到DataGrid1控件上  
  24.   this.DataGrid1.DataSource=ds;  
  25.   this.DataGrid1.DataBind();  
  26.    
  27.   }  

存儲過程的使用標準版  

  1. private void sql_proc()  
  2.    {  
  3.       
  4.     SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");  
  5.     string sql="proc_out";  
  6.     SqlCommand comm=new SqlCommand(sql,conn);  
  7.      
  8.     //把Command執(zhí)行類型改為存儲過程方式,默認為Text。  
  9.     comm.CommandType=CommandType.StoredProcedure;  
  10.  
  11.     //傳遞一個輸入?yún)?shù),需賦值  
  12.     SqlParameter sp=comm.Parameters.Add("@uid",SqlDbType.Int);  
  13.     sp.Value=10;  
  14.  
  15.     //定義一個輸出參數(shù),不需賦值。Direction用來描述參數(shù)的類型  
  16.     //Direction默認為輸入?yún)?shù),還有輸出參數(shù)和返回值型。  
  17.     sp=comm.Parameters.Add("@output",SqlDbType.VarChar,50);  
  18.     sp.Direction=ParameterDirection.Output;  
  19.  
  20.     //定義過程的返回值參數(shù),過程執(zhí)行完之后,將把過程的返回值賦值給名為myreturn的Paremeters賦值。  
  21.     sp=comm.Parameters.Add("myreturn",SqlDbType.Int);  
  22.     sp.Direction=ParameterDirection.ReturnValue;  
  23.      
  24.     //使用SqlDataAdapter將自動完成數(shù)據(jù)庫的打開和關(guān)閉過程,并執(zhí)行相應(yīng)t-sql語句或存儲過程  
  25.     //如果存儲過程只是執(zhí)行相關(guān)操作,如級聯(lián)刪除或更新,使用SqlCommand的execute方法即可。  
  26.     SqlDataAdapter da=new SqlDataAdapter(comm);  
  27.     DataSet ds=new DataSet();  
  28.     da.Fill(ds);  
  29.      
  30.      
  31.     //在執(zhí)行完存儲過程之后,可得到輸出參數(shù)   
  32.     string myout=comm.Parameters["@output"].Value.ToString();  
  33.      
  34.     //打印輸出參數(shù):  
  35.     Response.Write("打印輸出參數(shù):"+myout);  
  36.  
  37.     //打印存儲過程返回值  
  38.     myout=comm.Parameters["myreturn"].Value.ToString();  
  39.     Response.Write("存儲過程返回值:"+myout);  
  40.  
  41.     this.DataGrid1.DataSource=ds;  
  42.     this.DataGrid1.DataBind();  
  43.  
  44.  
  45.    }  
  46.  

存儲過程的使用最簡版: 

  1. private void sql_jyh()  
  2.    {  
  3.  
  4.    //最簡寫法,把存儲過程當作t-sql語句來使用,語法為:exec 過程名 參數(shù)  
  5.  
  6.    SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");  
  7.    string sql="execute proc_out 10,'12'";  
  8.    SqlCommand comm=new SqlCommand(sql,conn);  
  9.     
  10.    //使用SqlDataAdapter將自動完成數(shù)據(jù)庫的打開和關(guān)閉過程,并執(zhí)行相應(yīng)t-sql語句或存儲過程  
  11.    //如果存儲過程只是執(zhí)行相關(guān)操作,如級聯(lián)刪除或更新,使用SqlCommand的execute方法即可。  
  12.    SqlDataAdapter da=new SqlDataAdapter(comm);  
  13.    DataSet ds=new DataSet();  
  14.    da.Fill(ds);  
  15.     
  16.    //綁定數(shù)據(jù)  
  17.    this.DataGrid1.DataSource=ds;  
  18.    this.DataGrid1.DataBind();  
  19.     
  20.    }  
  21.  

總結(jié)與理解

SqlCommand類,提供了對t-sql語句和存儲過程的執(zhí)行能力;它不只能執(zhí)行某一個sql語句,亦可執(zhí)行一組sql語句,如創(chuàng)建表,修改表等,可以這樣理解,對于sql server而言,只要在查詢分析器中可執(zhí)行的一組語句,通過SqlCommand同樣能得到很好的執(zhí)行。SqlCommand默認執(zhí)行方式,是執(zhí)行t-sql語句,即comm.CommandType=CommandType.Text。在執(zhí)行存儲過程時,可以用"exec 過程名 參數(shù)"的形式,將其作為t-sql語句,來執(zhí)行,也可以將SqlCommand的執(zhí)行方式改為執(zhí)行過程方式,即comm.CommandType=CommandType.StoredProcedure;兩種執(zhí)行存儲過程方式的主要區(qū)別是,前者在獲得輸出參數(shù)和返回值上,很困難;后者是全面的,也是微軟專門為執(zhí)行存儲過程而定義的全面策略。

以上就是在C#中使用存儲過程的方法。

【編輯推薦】

  1. C#基礎(chǔ)知識一覽
  2. 學習C#自定義用戶控件
  3. C#自定義組件和用戶組件屬性的設(shè)置
  4. C#編程中的組件-事件-委托
  5. Visual C#自定義組件的設(shè)計:Pop3Com組件
責任編輯:book05 來源: cnblogs
相關(guān)推薦

2009-08-17 18:30:29

C# SQL Serv

2010-06-18 10:34:38

SQL Server

2020-12-31 07:31:10

C# 反射數(shù)據(jù)

2021-03-07 16:37:52

C#應(yīng)用程序

2012-03-08 10:18:33

JavaOracle

2021-02-01 12:36:59

C# Channels存儲

2021-01-19 05:30:55

C# 8異步流IEnumerable

2021-01-18 05:18:18

C# 8模式C# 7

2010-07-08 17:15:04

SQL Server存

2010-06-30 14:36:49

SQL Server

2010-09-14 10:16:57

sql server

2021-01-22 05:53:08

C# IndexRange

2021-01-28 05:14:40

C#接口簽名

2010-09-14 10:36:23

sql server存

2011-09-01 13:09:58

SQL Server DataTable作為

2009-08-06 16:18:38

C#調(diào)用SQL存儲過程

2021-11-25 00:04:16

C# 插值字符串

2010-10-20 16:17:17

SQL Server角

2009-08-06 16:44:06

2018-08-03 08:37:31

設(shè)計模式IT項目GDPR
點贊
收藏

51CTO技術(shù)棧公眾號