C# 操作存储过程

来源:互联网 发布:科勒橱柜怎么样 知乎 编辑:程序博客网 时间:2024/05/19 13:18

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

原创粉丝点击