C#调用SQL SERVER存储过程

来源:互联网 发布:店宝宝软件怎么样 编辑:程序博客网 时间:2024/06/05 00:53
1. 只返回单一记录集的存储过程

1.1 存储过程Categoriestest1

  CREATE PROCEDURE Categoriestest1     AS     select *  from  Categories    GO
1.2 c#调用
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();
-------------------------------------------------------------------------------------------------- 
2. 没有输入输出的存储过程

2.1 存储过程Categoriestest2 

 CREATE PROCEDURE Categoriestest2  AS    insert into dbo.Categories (CategoryName,[Description],[Picture])values('test1','test1',null)   GO

2.2 c#调用

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();

--------------------------------------------------------------------------------------------------
3. 有返回值的存储过程

3.1 存储过程Categoriestest3  

 CREATE PROCEDURE Categoriestest3    AS     insert into dbo.Categories (CategoryName,[Description],[Picture])value('test1','test1',null)     return @@rowcount   GO

3.2 c#调用

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() ;
--------------------------------------------------------------------------------------------------

4. 有输入参数和输出参数的存储过程

4.1 存储过程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

4.2 c#调用
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() ; 

--------------------------------------------------------------------------------------------------
5. 同时具有返回值、输入参数、输出参数的存储过程

5.1存储过程Categoriestest5

   CREATE PROCEDURE Categoriestest5    @id int output,    @CategoryName nvarchar(15)    AS    insert into dbo.Categories     (CategoryName,[Description],[Picture])    values (@CategoryName,'test1',null)    set  @id = @@IDENTITY    return @@rowcount    GO

5.2 c#调用

SqlConnection sqlconn = new SqlConnection(conn);         SqlCommand cmd = new SqlCommand();         cmd.Connection = sqlconn;         cmd.CommandText = "Categoriestest5";         cmd.CommandType = CommandType.StoredProcedure;         // 创建参数         IDataParameter[] parameters = {                 new SqlParameter("@Id", SqlDbType.Int,4) ,                 new SqlParameter("@CategoryName", SqlDbType.NVarChar,15) ,                 new SqlParameter("rval", SqlDbType.Int,4)             };         // 设置参数类型         parameters[0].Direction = ParameterDirection.Output;       // 设置为输出参数         parameters[1].Value = "testCategoryName";                  // 给输入参数赋值         parameters[2].Direction = ParameterDirection.ReturnValue;  // 设置为返回值         // 添加参数         cmd.Parameters.Add(parameters[0]);         cmd.Parameters.Add(parameters[1]);         cmd.Parameters.Add(parameters[2]);         sqlconn.Open();         // 执行存储过程并返回影响的行数         Label1.Text = cmd.ExecuteNonQuery().ToString();         sqlconn.Close();         // 显示影响的行数,输出参数和返回值         Label1.Text += "-" + parameters[0].Value.ToString() + "-" + parameters[2].Value.ToString();
--------------------------------------------------------------------------------------------------

6. 同时返回参数和记录集的存储过程

6.1存储过程Categoriestest6

   CREATE PROCEDURE Categoriestest6    @id int output,    @CategoryName nvarchar(15)    AS    insert into dbo.Categories     (CategoryName,[Description],[Picture])    values (@CategoryName,'test1',null)    set  @id = @@IDENTITY    select * from Categories    return @@rowcount    GO

6.2 c#调用
SqlConnection sqlconn = new SqlConnection(conn);         SqlCommand cmd = new SqlCommand();         cmd.Connection = sqlconn;         cmd.CommandText = "Categoriestest6";         cmd.CommandType = CommandType.StoredProcedure;         // 创建参数         IDataParameter[] parameters = {                 new SqlParameter("@Id", SqlDbType.Int,4) ,                 new SqlParameter("@CategoryName", SqlDbType.NVarChar,15) ,                 new SqlParameter("rval", SqlDbType.Int,4)                   // 返回值             };         // 设置参数类型         parameters[0].Direction = ParameterDirection.Output;        // 设置为输出参数         parameters[1].Value = "testCategoryName";                   // 给输入参数赋值         parameters[2].Direction = ParameterDirection.ReturnValue;   // 设置为返回值         // 添加参数         cmd.Parameters.Add(parameters[0]);         cmd.Parameters.Add(parameters[1]);         cmd.Parameters.Add(parameters[2]);         SqlDataAdapter dp = new SqlDataAdapter(cmd);         DataSet ds = new DataSet();         // 填充dataset         dp.Fill(ds);         // 显示结果集         GridView1.DataSource = ds.Tables[0];         GridView1.DataBind();         Label1.Text = "";         // 显示输出参数和返回值         Label1.Text +=  parameters[0].Value.ToString() + "-" + parameters[2].Value.ToString();

--------------------------------------------------------------------------------------------------
7. 返回多个记录集的存储过程
7.1 存储过程Categoriestest7
   CREATE PROCEDURE Categoriestest7    AS    select * from Categories    select * from Categories    GO


7.2 c#调用 
 SqlConnection sqlconn = new SqlConnection(conn);         SqlCommand cmd = new SqlCommand();                  cmd.Connection = sqlconn;         cmd.CommandText = "Categoriestest7";          cmd.CommandType = CommandType.StoredProcedure;         SqlDataAdapter dp = new SqlDataAdapter(cmd);         DataSet ds = new DataSet();         // 填充dataset         dp.Fill(ds);         // 显示结果集1         GridView1.DataSource = ds.Tables[0];         GridView1.DataBind();         // 显示结果集2         GridView2.DataSource = ds.Tables[1];         GridView2.DataBind();


注:文章源于网络,本人收集方便自己学习的同时分享给大家……
原创粉丝点击