您的位置:首页 > 产品设计 > UI/UE

ExecuteReader调用存储过程无法获取RETURN_VALUE

2012-04-15 20:06 435 查看
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掉,否则也无法获取返回值。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: