A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李玮 中级黑马   /  2012-5-31 11:38  /  3621 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李玮 于 2012-6-4 09:18 编辑

reader.read()是什么,读取到为true,读取不到为false????
谁能给我做一下关于reader的导盲
链接也可以,急求!!!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

13 个回复

倒序浏览
sqldatareader  reader什么的全不懂

点评

这也给分啊?  发表于 2012-5-31 21:31
回复 使用道具 举报
本帖最后由 王针 于 2012-5-31 11:59 编辑

我是这样理解的:
reader.read()相当于在遍历表数据,有一个指针处于表第一条数据的前面(此时当然为false)
以一个含有用户名和密码的表为例:
当要查询用户名是否为你给定的值,如"admin",只要一调用rader.read(),指针就开始在这个表开始移动,一次移动一行,移到第一行就判断第一行的表数据中用户名是否为"admin",如果不是"admin",当然就返回false,然后继续往下遍历第二行,如果用户名还不是"admin",就继续往下遍历,直到找到用户名为"admin"的一行记录返回true为止。
如果已经遍历到了表的最后一行,但是用户名已然不是"admin",指针就移动到表最后一行的下面(当然更不会有数据啦),而且表已经遍历完毕,最终自然还是返回false了。

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
rader.read(),  如果里边有数据 就是true 没有数据 就是fasle  然后这样做是对大的数据有很大的方便 ,因为他不会吧数据填充到内存  而是直接在数据表中进行操作
如果我们要读取数据的表中列的数据的话 举个例子 Reader.GetString(Reader.GetOrdinal(列名));  

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
G_Xiaotao 发表于 2012-5-31 17:07
rader.read(),  如果里边有数据 就是true 没有数据 就是fasle  然后这样做是对大的数据有很大的方便 ,因 ...

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

如果表中有两个满足 条件 返回true
那么reader中有两个 还是一个啊
回复 使用道具 举报
什么 两个满足条件?reader就像一个指针嘛  就是有数据 塔返回的是true  没有就是false   它从第一行一直读到最后一行 什么reader里边现在是没有数据的!! 我们读取数据是列外的哈 就像我给你写的那句话   嘿嘿   

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
王针 中级黑马 2012-5-31 20:19:51
8#
本帖最后由 王针 于 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 时为止。

回复 使用道具 举报
昨天也在为这个问题苦恼!!!
回复 使用道具 举报
对!如果该位置有数据,则返回true,无数据返回false。一般在程序中我们会这样写:
while(reader.Read())
{
   //
}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
reader.read()是从sqlsever数据库的某张表的从第一条记录开始查询,读取不到为false表明在该表中没有你要查看的记录。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
read()方法用来从数据库的表里依次读取值,一条一条往下读;当有下一条的数据时,就返回true,否则为false。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
首先reader是数据库读取出来的一个数据集,
reader的read()方法用来从数据集一条一条往下读取
当有下一条的数据时,就返回true,否则为false。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
read.read()就是有没有读到数据,一般用的时候都要加上if(read.read()){},记得到最后一定要read.close(),这是许多新手老犯得问题

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马