SqlDataReader的关闭问题,报错:“阅读器关闭时尝试调用 HasRows 无效”

在使用ADO.NET三层架构验证用户名登录时遇到SqlDataReader的HasRows报错,原因是SqlDataReader在使用过程中连接已关闭。解决方案是在创建SqlDataReader时指定CommandBehavior.CloseConnection,使连接在Reader关闭时自动关闭。在完成Reader操作后,调用Reader.Close()即可避免该问题。
摘要由CSDN通过智能技术生成

最近在练习一个ADO.NET三层架构验证用户名登录密码时出现报错:“阅读器关闭时尝试调用 HasRows 无效”

百度了好多文章才得到解决:

先来看SqlHelper获取SqlDataReader

public static SqlDataReader ExecuteDataReader(string sql, params SqlParameter[] Parameters)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = Connection;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
foreach (SqlParameter p in Parameters)
{
cmd.Parameters.Add(p);
}
try
{
Connection.Open();
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}

}
在来看获取SqlDataReader代码:

public UserModel GetUserLoginInfoByLoginId(string LoginId)
        {
            UserModel model = null;
            string sql = "select loginid,password from hrmresource where loginid=@Uid";
            SqlDataReader reader = SqlHelper.ExecuteDat
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值