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掉,否则也无法获取返回值。