public int Exists(Model.User user)
{
SqlParameter[] para = new SqlParameter[] {
new SqlParameter("@userName",SqlDbType.NChar),
new SqlParameter("@pwd",SqlDbType.Char),
new SqlParameter("@RETURN_VALUE", SqlDbType.Int),
};
para[0].Value = user.ID;
para[1].Value = Encrypt(user.Pwd);
para[2].Direction = ParameterDirection.ReturnValue;
SqlDataReader reader = SQLHelper.ExecuteReader("SelectUser", CommandType.StoredProcedure, para);
if (reader.Read())
{
// 保存用户信息
}
reader.Close();
reader.Dispose();
return (int)para[2].Value;
}
由于ExecuteReader会操持数据库的连接状态,因此存储过程的返回值无法返回。需要关闭连接后才能获取返回值,关键以下两句:
reader.Close();
reader.Dispose();
SQLHelper.ExecuteReader("SelectUser", CommandType.StoredProcedure, para);方法中不能将传入参数Clear掉,否则也无法获取返回值。
本文介绍了一个使用C#和SQL Server的存储过程实现用户验证的方法。重点在于如何正确处理存储过程的返回值,尤其是在使用SqlDataReader之后确保能够读取返回值的具体步骤。
3088

被折叠的 条评论
为什么被折叠?



