c#之执行SQL存储过程

目的:通过C#.NET调用SQL Server数据库中定义的存储过程。

示例一:

存储过程名:sp_login

输入参数1:@username nvarchar(50)

输入参数2:@password nvarchar(50)

输出参数:@nickname nvarchar(50)

返回值:@retval int

using (SqlConnection sqlConn = new SqlConnection("Data Source=(local);Initial Catalog=EG;User ID=user;Password=123456"))
{
    sqlConn.Open();

    SqlCommand sqlCommand = new SqlCommand("sp_login", sqlConn);
    sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;

    sqlCommand.Parameters.Add(new SqlParameter("@username", System.Data.SqlDbType.NVarChar));
    sqlCommand.Parameters["@username"].Value = "user01";

    sqlCommand.Parameters.Add(new SqlParameter("@password", System.Data.SqlDbType.NVarChar));
    sqlCommand.Parameters["@password"].Value = "password";

    sqlCommand.Parameters.Add(new SqlParameter("@nickname", System.Data.SqlDbType.NVarChar, 50));// 注意:对于输出参数,必须指定参数的尺寸
    sqlCommand.Parameters["@nickname"].Direction = ParameterDirection.Output;

    sqlCommand.Parameters.Add(new SqlParameter("@retval", System.Data.SqlDbType.Int));
    sqlCommand.Parameters["@retval"].Direction = ParameterDirection.ReturnValue;

    sqlCommand.ExecuteNonQuery(); // 开始执行存储过程

    // 读取返回值及输出参数的值
    int retval = (int)sqlCommand.Parameters["@retval"].Value;
    string nickname = (string)sqlCommand.Parameters["@nickname"].Value;
}

 

示例二:

存储过程名:sp_report

输入参数1:@max int

输入参数2:@min int

输出一张表

using (SqlConnection sqlConn = new SqlConnection("Data Source=(local);Initial Catalog=EG;User ID=user;Password=123456"))
{
    sqlConn.Open();

    SqlCommand sqlCommand = new SqlCommand("sp_report", sqlConn);
    sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;

    sqlCommand.Parameters.Add(new SqlParameter("@max", System.Data.SqlDbType.Int));
    sqlCommand.Parameters["@max"].Value = 10;

    sqlCommand.Parameters.Add(new SqlParameter("@min", System.Data.SqlDbType.Int));
    sqlCommand.Parameters["@min"].Value = 0;

    SqlDataAdapter adapter = new SqlDataAdapter(sqlCommand);

    DataTable table = new DataTable("Report");

    adapter.Fill(table);

    // 读取返回的表
    for (int i = 0; i < table.Rows.Count; i++)
    {
        for (int j = 0; j < table.Columns.Count; j++)
        {
            // table.Rows[i][j]
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值