SqlDataReader 的用法
发表在ASP.NET图书答疑 2010-03-24
是否精华
版块置顶:
DAL: public SqlDataReader GetAdminNameAndPassword()
        {
            SqlConnection conn = connectionManger.GetConnectionStr();
            SqlDataReader dr = null;
            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("select AdminName,AdminPassword from [dbo].[T_Admin]", conn);
                dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                dr.Read();
            }
            catch (SqlException se)
            {
                throw se;
            }
            finally
            {
                //dr.Dispose();
                //dr.Close();
                if (conn.State != System.Data.ConnectionState.Closed)
                {
                    conn.Close();
                }
                conn.Dispose();
            }
            return dr;
        }
BLL:.......省略
界面后台代码: protected void GetAdminNameAndPassword()
        {
            SqlDataReader dr = new BBSBBL.T_AdminInfo().GetAdminNameAndPassword();
            dr.Read();
            this.txtAdminName.Text = dr.GetString(0);
            this.txtAdminPassword.Text = dr.GetString(1);
        }
错误提示:阅读器关闭时尝试调用 Read 无效
         
行 24:         {
行 25:             SqlDataReader dr = new BBSBBL.T_AdminInfo().GetAdminNameAndPassword();
行 26:             dr.Read();-------此行代码是红色的
行 27:             this.txtAdminName.Text = dr.GetString(0);
行 28:             this.txtAdminPassword.Text = dr.GetString(1);
 
分享到:
精彩评论 3
lyf681888
学分:0 LV1
2010-03-24
沙发
将下列代码去掉
if (conn.State != System.Data.ConnectionState.Closed)
{
conn.Close();
}
conn.Dispose();


使用SqlDataReader读取数据时不能关闭数据连接,
将SqlDataReader绑定到gridView以后可调用dr.Close();关闭数据连接
General KING
学分:0 LV1
2010-03-24
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
将下列代码去掉
if (conn.State != System.Data.ConnectionState.Closed)
{
conn.Close();
}
conn.Dispose();


使用SqlDataReader读取数据时不能关闭数据连接,
将SqlDataReader绑定到gridView以后可调用dr.Close();关闭数据连接
[/FIELDSET]

我这样做了,也不对!
现在出现一个错误说是: this.txtAdminName.Text = dr[0].ToString();在没有任何数据时进行无效的读取尝试。

回复:
  
lyf681888
学分:0 LV1
2010-05-20
地板
SqlDataReader dr = new BBSBBL.T_AdminInfo().GetAdminNameAndPassword();
dr.Read();
this.txtAdminName.Text = dr.GetString(0);
this.txtAdminPassword.Text = dr.GetString(1);

以上面代码为例,应改为

SqlDataReader dr = new BBSBBL.T_AdminInfo().GtAdminNameAndPassword();
if (dr.Read() )
{
    this.txtAdminName.Text = dr.GetString(0);
    this.txtAdminPassword.Text = dr.GetString(1);
}
因为读不出数据时,执行dr.GetString(0)时会出错,所以使用if (dr.read())判断一下,

这是一个典型的陷阱,在细说asp.net中有30个陷阱分析,其中一个就是它


首页上一页 1 下一页尾页 3 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照