reader.read()的问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 15:32:22
reader.read()有没有方法从sqlsever数据库的最后一条记录开始查询,
我不想从第一条开始查,想从最后一条开始查
有的话
请给我举个例子
reader.read()怎么向上移动??
在一个方法里
若reader.close()已经执行了,但我还需要用它再查一次第二句sqlcommand,我写了sqldatareader reader=cmd.executereader();但是程序说我错了,这是为什么??
难道关闭了就不能在开了么??
注意在同一个方法里

sqldatareader reader=cmd.executereader();
执行出错,是不是说重复定义?
既然你前面已经有reader的定义,后面就直接:
reader=cmd.executereader();
就可以了
不需要再定义一遍的

To:鞋带
没错,内存中只有一条记录,但是Read()方法的读取顺序还是按照Order来排列的,你可能误会了楼主的意图。

另外我对楼主再补充一下,按楼主你的说法,你想从后往前读,就表示你的数据应该是有排序规则的,所以DESC应该可行。
如果你的数据本身就没有排序规则,那从前往后,还是从后往前,都没有什么实际应用意义。

不能向上移动,你可以转个思维,想办法把你的记录倒序排列
比如:
select * from table order id desc
这样就达到你的目的了

IBM..你这个想法貌似正确,但read依然不能拿最后一条.因为datareader取得数据的方式是只读,向前,而且保持连接,在内存中只有一条记录.DESC拿到的无所谓最后还是最前了

数据的顺序不同于数据集的顺序..
如果你只是单纯的想拿最后一条,添到DataSet里作循环吧

综上所述,我给楼主几个解决方案:
1.用数据集(DataSet)缓存数据,可以以随心所欲的顺序读取记录,

2.如果楼主考虑内存的开销,而一定要用DataReader的话,根据你的意图,可以用【select * from table order id desc】这类查询语句,正读

3.你可以打电话给微软,叫他们再4.0的框架上附带一个DataReaderExtender之类的类,专门用于逆读数据库的DataReader,他们兴许能答应~

ps:DataReader本身无法逆读