学习 DbHelperSQL,使用返回值的存储过程

用动软的代码生成工具很久了,但是从来都没有仔细看过 数据访问基础类 今天需要在这个这个基础上写一个返回参数的存储过程,让我翻了好久的资料现在记录下来以防下次使用。

首先我们需要在parameters 增加参数的时候设置变量的类型。如下:

/// <summary>
/// 用户登录验证。 
/// </summary>
/// <param name="UserAcc">账号</param>
/// <param name="UserPwd">密码</param>
/// <returns>
/// 0 表示该账号不存在
/// -1 表示密码错误
/// 其他杂表示该账号的ID号 
/// </returns>
public int UserLogin(string UserAcc, string UserPwd)
{
SqlParameter[] parameters = {
new SqlParameter("@useracc",SqlDbType.VarChar,50),
new SqlParameter("@userpwd",SqlDbType.VarChar,200),
new SqlParameter("@returnErr",SqlDbType.Int)
};
parameters[0].Value = UserAcc;
parameters[1].Value = UserPwd;
parameters[2].Direction = ParameterDirection.Output; //此处设置变量类型

return int.Parse(DbHelperSQL.RunProceOnlyPara("userlogin", parameters,"returnErr")); //此处为存储过程需要返回变量的名字 (output 项) 
}

然后向 DbHelperSQL 增加一个返回参数的方法。代码如下:


/// <summary>
/// 执行存储过程,返回指定参数
/// </summary>
/// <param name="storedProcName">存储过程名称</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="ReturnPara">返回参数名称。注意此项为存储过程返回变量,不用带@</param>
/// <returns></returns>
public static string RunProceOnlyPara(string storedProcName, IDataParameter[] parameters,string ReturnPara)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
command.ExecuteNonQuery();
return command.Parameters["@" + ReturnPara].Value.ToString();

}
}