C#调用存储过程的ADO.Net

using System.Data.SqlClient;
                   //如果存储过程没有输入和输出参数,而且不返回查询结果

  SqlCommand cmd = new SqlCommand("存储过程名", conn);
  cmd.CommandType = CommandType.StoredProcedure;
  cmd.ExecuteNonQuery();
复制代码
                         //如果存储过程带输入参数

   SqlCommand cmd = new SqlCommand("存储过程名", conn);
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.Parameters.Add(new SqlParameter("存储过程输入参数变量名", 数据类型));
//如cmd.Parameters.Add(new SqlParameter("@riqi", SqlDbType.DateTime, 8));
//把具体的值传给输入参数
   cmd.Parameters["存储过程输入参数"].Value =具体的值;
//如cmd.Parameters["@riqi"].Value = this.textBox1.Text;
//执行存储过程
  cmd.ExecuteNonQuery();
复制代码
复制代码
                           //如果存储过程带输出参数

   SqlCommand cmd = new SqlCommand("存储过程名", conn);
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.Parameters.Add(new SqlParameter("存储过程输出参数变量名", 数据类型));
   cmd.Parameters["存储过程输出参数变量名"].Direction = ParameterDirection.Output;
   cmd.ExecuteNonQuery();
//显示输出参数的值cmd.Parameters["存储过程输出参数变量名"].Value   
//如this.textBox3.Text = cmd.Parameters["@ItemCount"].Value.ToString();
复制代码
复制代码
                          //如果存储过程带输出和输出参数

   SqlCommand cmd = new SqlCommand("存储过程名", conn);
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.Parameters.Add(new SqlParameter("存储过程输入参数变量名", 数据类型));
   cmd.Parameters["存储过程输入参数"].Value =具体的值;
   cmd.Parameters.Add(new SqlParameter("存储过程输出参数变量名", 数据类型));
   cmd.Parameters["存储过程输出参数变量名"].Direction = ParameterDirection.Output;
   cmd.ExecuteNonQuery();
//显示输出参数的值cmd.Parameters["存储过程输出参数变量名"].Value   
//如this.textBox3.Text = cmd.Parameters["@ItemCount"].Value.ToString();
复制代码

                            

复制代码
调用带输入参数的存储过程

【例2】创建存储过程AddNewCategory实现往Category表中添加新的商品类别,新的商品分类名称CategoryName作为输入参数输入。
CREATE PROCEDURE AddNewCategory
 (@categoryName nvarchar(50))
AS
 INSERT INTO Category (CategoryName) VALUES (@categoryName)
复制代码
复制代码
【例】调用上述存储过程AddNewCategory
      try
            {
                // 数据库连接字符串
                string connStr = "server=localhost;uid=sa;pwd=;database=eshop";
                // 创建Connection 对象
                SqlConnection conn = new SqlConnection(connStr);
                // 打开数据库连接
                conn.Open();

                SqlCommand cmd = new SqlCommand("AddNewCategory", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@categoryName", SqlDbType.NVarChar,50));
                cmd.Parameters["@categoryName"].Value = this.textBox1.Text;
                cmd.ExecuteNonQuery();
                MessageBox.Show("插入成功");
            }

       catch
           {  
               MessageBox.Show("操作不成功");
               return;
            }
复制代码

                             

复制代码
    
                               调用带输入和输出参数的存储过程

【例1】创建存储过程ShoppingCartItemCount获取某购物车中购物种数并作为输出参数输出,购物车编号CartID为输入参数。
CREATE Procedure [dbo].[ShoppingCartItemCount]
(   @CartID    nvarchar(50),
    @ItemCount int OUTPUT
)
AS
SELECT  @ItemCount = COUNT(ProductID)  FROM  ShoppingCart    
WHERE  CartID = @CartID
复制代码
复制代码
【例】调用上述存储过程ShoppingCartItemCount
          try
            {
                // 数据库连接字符串
                string connStr = "server=localhost;uid=sa;pwd=;database=eshop";
                // 创建Connection 对象
                SqlConnection conn = new SqlConnection(connStr);
                // 打开数据库连接
                conn.Open();

                SqlCommand cmd = new SqlCommand("ShoppingCartItemCount", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@CartID", SqlDbType.NVarChar,50));
                cmd.Parameters["@CartID"].Value = this.textBox2.Text;
                cmd.Parameters.Add(new SqlParameter("@ItemCount",SqlDbType.Int));
                cmd.Parameters["@ItemCount"].Direction = ParameterDirection.Output;
                 cmd.ExecuteNonQuery();
               //显示输出参数的值cmd.Parameters["存储过程输出参数变量名"].Value   
                 this.textBox3.Text = cmd.Parameters["@ItemCount"].Value.ToString();
               
              }

                 catch
                  {

                     MessageBox.Show("操作不成功");
                     return;
                  }
复制代码

 实际例子:

复制代码
 string constr = "server=192.168.9.111;database=111;uid=sa;pwd=1111234";
                using(SqlConnection conn=new SqlConnection(constr))
                {
                    conn.Open();

                    using (SqlCommand cmd = new SqlCommand("p_pageSelect", conn))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.Add(new SqlParameter("@num", SqlDbType.Int));
                        cmd.Parameters.Add(new SqlParameter("@tableName", SqlDbType.NVarChar, 50));
                        cmd.Parameters.Add(new SqlParameter("@startNum", SqlDbType.Int));

                        cmd.Parameters["@num"].Value = this.tbNum.Text;
                        cmd.Parameters["@tableName"].Value = this.cmbTableName.Text;
                        cmd.Parameters["@startNum"].Value = this.tbStartNum.Text;
                        SqlDataAdapter sda = new SqlDataAdapter(cmd);
                        DataSet ds = new DataSet();

                        sda.Fill(ds);
                       dgvData.DataSource= ds.Tables[0];

                    }
                }
复制代码

猜你喜欢

转载自www.cnblogs.com/jiangyunfeng/p/10512789.html