如何在C#中使用預存程序(SQL Server 2000)

來源:互聯網
上載者:User
要在C#中使用預存程序,首先看看test表的建立sql語句: 

create table test55
(
uid int identity(1,1),
class1 varchar(20),
class2 varchar(20),
uname varchar(20),
birth smalldatetime,
meno varchar(50)
)
 
alter table test55
add constraint primary_id primary key(uid)

建立一個有輸入、輸出、傳回值參數的預存程序:

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

as

--select結果集

select * from test where uid>@uid

--對輸出參數進行賦值

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

--使用return,給預存程序一個傳回值。

return 200;

go

在C#中使用預存程序:

使用帶有參數的sql語句

private void sql_param()
  {
 
  SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");
    
  //在sql語句當中引入了@myid參數

  string sql="select * from test where uid>@myid";
  SqlCommand comm=new SqlCommand(sql,conn);
           
  //使用comm的Parameters屬性的add方法,對上述的@myid參數進行定義和賦值

  //SqlDbType類提供了與SqlServer資料類型一致的資料庫類型

  SqlParameter sp=comm.Parameters.Add("@myid",SqlDbType.Int);
  sp.Value=10;//對輸入參數賦值

      
  //Command對象預設的執行方式為Text,不寫下句亦可

  comm.CommandType=CommandType.Text;
    
  //將Command對象作為DataAdapter的參數傳進

  SqlDataAdapter da=new SqlDataAdapter(comm);
  DataSet ds=new DataSet();
  da.Fill(ds);
 
        //綁定資料到DataGrid1控制項上

  this.DataGrid1.DataSource=ds;
  this.DataGrid1.DataBind();
   
  }

預存程序的使用標準版 

private void sql_proc()
   {
      
    SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");
    string sql="proc_out";
    SqlCommand comm=new SqlCommand(sql,conn);
     
    //把Command執行類型改為預存程序方式,預設為Text。

    comm.CommandType=CommandType.StoredProcedure;
 
    //傳遞一個輸入參數,需賦值

    SqlParameter sp=comm.Parameters.Add("@uid",SqlDbType.Int);
    sp.Value=10;
 
    //定義一個輸出參數,不需賦值。Direction用來描述參數的類型

    //Direction預設為輸入參數,還有輸出參數和傳回值型。

    sp=comm.Parameters.Add("@output",SqlDbType.VarChar,50);
    sp.Direction=ParameterDirection.Output;
 
    //定義過程的傳回值參數,過程執行完之後,將把過程的傳回值賦值給名為myreturn的Paremeters賦值。

    sp=comm.Parameters.Add("myreturn",SqlDbType.Int);
    sp.Direction=ParameterDirection.ReturnValue;
     
    //使用SqlDataAdapter將自動完成資料庫的開啟和關閉過程,並執行相應t-sql語句或預存程序

    //如果預存程序只是執行相關操作,如串聯刪除或更新,使用SqlCommand的execute方法即可。

    SqlDataAdapter da=new SqlDataAdapter(comm);
    DataSet ds=new DataSet();
    da.Fill(ds);
     
     
    //在執行完預存程序之後,可得到輸出參數

    string myout=comm.Parameters["@output"].Value.ToString();
     
    //列印輸出參數:

    Response.Write("列印輸出參數:"+myout);
 
    //列印預存程序傳回值

    myout=comm.Parameters["myreturn"].Value.ToString();
    Response.Write("預存程序傳回值:"+myout);
 
    this.DataGrid1.DataSource=ds;
    this.DataGrid1.DataBind();
 
 
   }

預存程序的使用最簡版:

private void sql_jyh()
   {
 
   //最簡寫法,把預存程序當作t-sql語句來使用,文法為:exec 過程名 參數

 
   SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");
   string sql="execute proc_out 10,'12'";
   SqlCommand comm=new SqlCommand(sql,conn);
    
   //使用SqlDataAdapter將自動完成資料庫的開啟和關閉過程,並執行相應t-sql語句或預存程序

   //如果預存程序只是執行相關操作,如串聯刪除或更新,使用SqlCommand的execute方法即可。

   SqlDataAdapter da=new SqlDataAdapter(comm);
   DataSet ds=new DataSet();
   da.Fill(ds);
    
   //綁定資料

   this.DataGrid1.DataSource=ds;
   this.DataGrid1.DataBind();
    
   }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.