黑马程序员技术交流社区

标题: 【已解决】ADO.Net中的 reader.read()的理解 [打印本页]

作者: 李玮    时间: 2012-5-31 11:38
标题: 【已解决】ADO.Net中的 reader.read()的理解
本帖最后由 李玮 于 2012-6-4 09:18 编辑

reader.read()是什么,读取到为true,读取不到为false????
谁能给我做一下关于reader的导盲
链接也可以,急求!!!
作者: 李玮    时间: 2012-5-31 11:40
sqldatareader  reader什么的全不懂
作者: 王针    时间: 2012-5-31 11:57
本帖最后由 王针 于 2012-5-31 11:59 编辑

我是这样理解的:
reader.read()相当于在遍历表数据,有一个指针处于表第一条数据的前面(此时当然为false)
以一个含有用户名和密码的表为例:
当要查询用户名是否为你给定的值,如"admin",只要一调用rader.read(),指针就开始在这个表开始移动,一次移动一行,移到第一行就判断第一行的表数据中用户名是否为"admin",如果不是"admin",当然就返回false,然后继续往下遍历第二行,如果用户名还不是"admin",就继续往下遍历,直到找到用户名为"admin"的一行记录返回true为止。
如果已经遍历到了表的最后一行,但是用户名已然不是"admin",指针就移动到表最后一行的下面(当然更不会有数据啦),而且表已经遍历完毕,最终自然还是返回false了。
作者: G_Xiaotao    时间: 2012-5-31 17:07
rader.read(),  如果里边有数据 就是true 没有数据 就是fasle  然后这样做是对大的数据有很大的方便 ,因为他不会吧数据填充到内存  而是直接在数据表中进行操作
如果我们要读取数据的表中列的数据的话 举个例子 Reader.GetString(Reader.GetOrdinal(列名));  
作者: 李玮    时间: 2012-5-31 17:34
G_Xiaotao 发表于 2012-5-31 17:07
rader.read(),  如果里边有数据 就是true 没有数据 就是fasle  然后这样做是对大的数据有很大的方便 ,因 ...

如果表中有两个满足 条件 返回true
那么reader中有两个 还是一个啊
作者: 李玮    时间: 2012-5-31 17:34
王针 发表于 2012-5-31 11:57
我是这样理解的:
reader.read()相当于在遍历表数据,有一个指针处于表第一条数据的前面(此时当然为false) ...

如果表中有两个满足 条件 返回true
那么reader中有两个 还是一个啊
作者: G_Xiaotao    时间: 2012-5-31 17:49
什么 两个满足条件?reader就像一个指针嘛  就是有数据 塔返回的是true  没有就是false   它从第一行一直读到最后一行 什么reader里边现在是没有数据的!! 我们读取数据是列外的哈 就像我给你写的那句话   嘿嘿   
作者: 王针    时间: 2012-5-31 20:19
本帖最后由 王针 于 2012-5-31 20:29 编辑

回复:李玮
这是我刚刚搜到的...
以前一直觉得msdn很臃肿复杂,今天才发现,其实很强大...
http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldatareader.read(v=vs.80)

返回值

如果存在多个行,则为 true;否则为 false。
备注
SqlDataReader 的默认位置在第一条记录前面。因此,必须调用 Read 来开始访问任何数据。

对于每个关联的 SqlConnection,一次只能打开一个 SqlDataReader,在第一个关闭之前,打开另一个的任何尝试都将失败。类似地,在使用 SqlDataReader 时,关联的 SqlConnection 正忙于为它提供服务,直到调用 Close 时为止。


作者: 董超    时间: 2012-6-2 09:49
昨天也在为这个问题苦恼!!!
作者: 杨雪    时间: 2012-6-7 00:00
对!如果该位置有数据,则返回true,无数据返回false。一般在程序中我们会这样写:
while(reader.Read())
{
   //
}
作者: 许庭洲    时间: 2012-6-7 08:18
reader.read()是从sqlsever数据库的某张表的从第一条记录开始查询,读取不到为false表明在该表中没有你要查看的记录。
作者: 孙玉昌    时间: 2012-6-12 09:24
read()方法用来从数据库的表里依次读取值,一条一条往下读;当有下一条的数据时,就返回true,否则为false。
作者: 吴伟烈    时间: 2012-6-19 21:10
首先reader是数据库读取出来的一个数据集,
reader的read()方法用来从数据集一条一条往下读取
当有下一条的数据时,就返回true,否则为false。
作者: 程艳伟    时间: 2012-6-22 19:12
read.read()就是有没有读到数据,一般用的时候都要加上if(read.read()){},记得到最后一定要read.close(),这是许多新手老犯得问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2