C#调用存储过程

1.如果存储过程没有输入和输出参数,而且不返回查询结果

using System.Data.SqlClient;
SqlCommand cmd = new SqlCommand("存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();

2.如果存储过程带输入参数

//如果存储过程带输入参数
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();

3.如果存储过程带输出参数

//如果存储过程带输出参数

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

4.如果存储过程带输入和输出参数

//如果存储过程带输出和输出参数

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

5.带输入参数的存储过程

//创建存储过程AddNewCategory实现往Category表中添加新的商品类别,新的商品分类名称CategoryName作为输入参数输入。
CREATE PROCEDURE AddNewCategory
 (@categoryName nvarchar(50))
AS
 INSERT INTO Category (CategoryName) VALUES (@categoryName)

6调用上面的存储过程

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;
}

7.带输入和输出参数的存储过程

//创建存储过程ShoppingCartItemCount获取某购物车中购物种数并作为输出参数输出,购物车编号CartID为输入参数。
CREATE Procedure [dbo].[ShoppingCartItemCount]
(   
    @CartID    nvarchar(50),
    @ItemCount int OUTPUT
)
AS
SELECT  @ItemCount = COUNT(ProductID)  FROM  ShoppingCart    
WHERE  CartID = @CartID

8.调用上述存储过程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;
}

9.返回数据表的存储过程

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];

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值