`
gstarwd
  • 浏览: 1488572 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

DataReader 不存在此行/列的数据

SQL 
阅读更多

用DataReader对数据进行绑定呵呵,用他来读取数据库的最简单方式,它只能读取,不能写入,并且是从头至尾往下读的它占用内存小,速度快,在数据量较少的情况下,DataSet和DataReader 的优劣并没有非常明显的优劣,然而,当数据流量达到一定量(200条左右),这和您的计算机的硬件配置有关,DataReader 的优势就很明朗了. 

代码如下:

            string constr =**************
            string sql = string.Format("Select * from News where NewId={0}",5);
            OleDbConnection con=new OleDbConnection(constr);
            con.Open();
            OleDbCommand cmd = new OleDbCommand(sql, con);
            OleDbDataReader dtr=cmd.ExecuteReader();          
            dtr.Read();
            this.Label1.Text = dtr["NewTitle"].ToString();
            this.Label2.Text = dtr.GetValue(3).ToString();
            this.Label3.Text = dtr.GetValue(4).ToString();
            dtr.Dispose();
            con.Close();

刚开没有写dtr.Read();结果报错说 :不存在此行/列的数据。后来加上了, 因为dtr中有一条记录,所以读出来了。

呵呵粗心害死人啊!

同样的登陆这块也是:

  OleDbDataReader rd = cmd.ExecuteReader();  //执行SQL语句,返回记录(一般用户名和密码相同的只有一个),所以rd中只存在一条记录
      rd.Read();   //返回true,因为rd中有一条记录,所以读出来了。
      Label1.Text = rd.GetValue(0).ToString();
       if (rd.Read() == true)     //唯一的一条记录已经被读出来了,现在rd.read()将返回false
             Label1.Text = "登陆成功"; //这里永远不会登陆成功,除非有另外一个用户的用户名和密码完全一样

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics