北京北大青鳥:ADO.NET調(diào)用存儲過程

北京北大青鳥通州校區(qū)學(xué)術(shù)部提供:

一: 執(zhí)行不帶返回參數(shù)(Input)的存儲過程(北京北大青鳥
1:首先在數(shù)據(jù)庫寫個存儲過程, 如創(chuàng)建個 addUser存儲過程。
  Create Proc addUser
  @ID int,
  @Name varchar(20),
  @Sex varchar(20)
  As
  Insert Into Users Values( @ID, @Name,@Sex )
2:創(chuàng)建SqlCommand對象,并初始SqlCommand對象 如:
 SqlCommand cmd = new SqlCommand( );
 cmd.CommandText = "addUser";     // 制定調(diào)用哪個存儲過程
 cmd.CommandType = CommandType.StoredProcedure;     // 制定Sql命令類型是存儲過程, 默認(rèn)的為Sql語句。
 cmd.Connection = con;    // 設(shè)定連接
3:向SqlCommand對象添加存儲過程參數(shù)
 SqlParameter param = new SqlParameter( );   // 定義一個參數(shù)對象
 param.ParameterName = "@ID";                    // 存儲過程參數(shù)名稱
 param.Value = txtID.Text.Trim();                   // 該參數(shù)的值
 cmd.Parameters.Add( param );                        // SqlCommand對象添加該參數(shù)對象
 param = new SqlParameter( "@Name", txtName.Text.Trim() );  // 簡寫方式
 cmd.Parameters.Add( param );
4:SqlCommand對象調(diào)用執(zhí)行Sql的函數(shù)。 如:
   cmd.ExecuteNonQuery();
         
二:執(zhí)行帶返回參數(shù)(Output)的存儲過程(北京北大青鳥
    1: 首先在數(shù)據(jù)庫寫個存儲過程, 如創(chuàng)建個 queryUser存儲過程。
 alter Proc queryUser
       @ID int,
       @Suc varchar(10) output
       As
       select @Suc = 'false'
       if exists( Select * From users where u_id = @ID )
        select @Suc = 'success'
    2:創(chuàng)建SqlCommand對象,并初始SqlCommand對象 如:
      SqlCommand cmd = new SqlCommand( );
      cmd.CommandText = "queryUser";     // 制定調(diào)用哪個存儲過程
      cmd.CommandType = CommandType.StoredProcedure;     // 制定Sql命令類型是存儲過程, 默認(rèn)的為Sql語句。
      cmd.Connection = con;    // 設(shè)定連接
    3:向SqlCommand對象添加存儲過程參數(shù)
       SqlParameter param1 = new SqlParameter( "@ID", txtID.Text );   // 添加輸入?yún)?shù)
       cmd.Parameters.Add( param1 );
       SqlParameter param2 = new SqlParameter();         // 添加輸出參數(shù)
       param2.ParameterName = "@Suc";                       // 名稱
       param2.SqlDbType = SqlDbType.VarChar;         // 輸出參數(shù)的Sql類型
       param2.Size = 10;                                                   // 輸出參數(shù)的Sql類型大小
       param2.Direction = ParameterDirection.Output;  // 指定該參數(shù)對象為輸出參數(shù)類型
       cmd.Parameters.Add( param2 );
    4:SqlCommand對象調(diào)用執(zhí)行Sql的函數(shù)。 如:
   cmd.ExecuteNonQuery();
   MessageBox.Show( param2.Value.ToString() );  // 輸出輸出參數(shù)的值
輸入?yún)?shù)的存儲過程的示例:
   try
   {
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "addUser";
   
    SqlParameter param = new SqlParameter( );
    param.ParameterName = "@ID";
    param.Value = txtID.Text.Trim();
    cmd.Parameters.Add( param );
    param = new SqlParameter( "@Name", txtName.Text.Trim() );
    cmd.Parameters.Add( param );
    param = new SqlParameter();
    param.ParameterName = "@Sex";
    param.Value = txtSex.Text.Trim();
    cmd.Parameters.Add( param );
    //da.InsertCommand = cmd;
   
    if ( cmd.ExecuteNonQuery() == 1 )
    {
     MessageBox.Show( "添加成功" );
    }
    else
    {
     MessageBox.Show("失敗");
    }
   }
   catch( SqlException ex )
   {
    MessageBox.Show( ex.Message );
   }
 
輸出參數(shù)的存儲過程的示例:
    try
   {
    SqlCommand cmd = new SqlCommand( );
    cmd.CommandText = "queryUser";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = con;
   
    SqlParameter param1 = new SqlParameter( "@ID", txtID.Text );
    cmd.Parameters.Add( param1 );
    SqlParameter param2 = new SqlParameter();
    param2.ParameterName = "@Suc";
    param2.SqlDbType = SqlDbType.VarChar;
    param2.Size = 10;
    param2.Direction = ParameterDirection.Output;
    cmd.Parameters.Add( param2 );
   
    cmd.ExecuteNonQuery();

    MessageBox.Show( param1.Value.ToString() );
    MessageBox.Show( param2.Value.ToString() );
   }
   catch( SqlException ex )
   {
    MessageBox.Show( ex.Message );
    }

北京北大青鳥
  

北大青鳥網(wǎng)上報名
北大青鳥招生簡章