C# 操作存儲過程

1. 只返回單一記錄集的存儲過程

      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
      CREATE PROCEDURE Categoriestest1
      AS
      select
*
      from   Categories
      GO

2. 沒有輸入輸出的存儲過程

        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
     CREATE PROCEDURE Categoriestest2   AS
     insert into dbo.Categories
     (CategoryName,[Description],[Picture])
     values (
'test1','test1',null)
     GO


3. 有返回值的存儲過程
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
     CREATE PROCEDURE Categoriestest3
     AS
     insert into dbo.Categories
     (CategoryName,[Description],[Picture])
     values (
'test1','test1',null)
    
return @@rowcount
     GO


4. 有輸入參數和輸出參數的存儲過程
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  
   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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章