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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

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

评分

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

查看全部评分

13 个回复

正序浏览
read.read()就是有没有读到数据,一般用的时候都要加上if(read.read()){},记得到最后一定要read.close(),这是许多新手老犯得问题

评分

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

查看全部评分

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

评分

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

查看全部评分

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

评分

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

查看全部评分

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

评分

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

查看全部评分

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

评分

参与人数 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 时为止。

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

评分

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

查看全部评分

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

如果表中有两个满足 条件 返回true
那么reader中有两个 还是一个啊
回复 使用道具 举报
G_Xiaotao 发表于 2012-5-31 17:07
rader.read(),  如果里边有数据 就是true 没有数据 就是fasle  然后这样做是对大的数据有很大的方便 ,因 ...

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

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 王针 于 2012-5-31 11:59 编辑

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

评分

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

查看全部评分

回复 使用道具 举报
sqldatareader  reader什么的全不懂

点评

这也给分啊?  发表于 2012-5-31 21:31
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马