当前位置:编程学习 > C#/ASP.NET >>

dataReader怎么记录指针移到行尾,并取取得记录

请问
dataReader怎么记录指针移到行尾,并取取得记录
--------------------编程问答-------------------- 行尾?还是数据集尾?

--------------------编程问答-------------------- 只能用SqlDataReader.Read方法读取下一条,没有别的方法了.
你可以检测一下用Read读到的行是不是最后一行. --------------------编程问答-------------------- 楼主 既然是 读取 最后一条
何不 直接select top 1 呢!
comm.ExecuteScalar()不更好 --------------------编程问答-------------------- 如果是想取最后一记录的话,你可以先把数据填充到一个DataTable然后使用索引直接取出最后一条. --------------------编程问答-------------------- comm.ExecuteScalar()不更好

--------------

这只能取第一行第一列,楼主应该是想要取的是最后一整条记录. --------------------编程问答-------------------- sql里倒序  然后ExecuteScalar;(hertcloud(·£孙子兵法£·) (说的对的)

// 数据库连接字符串
string ConnStr = "server=hm;database=cn;User Id=sa";
// 创建插入SQL语句及调用@@identity函数返回标识值
string insert_query = "insert into 旅游 (城市,景点) values ('IT', 'Internet');"
+ "SELECT @@identity AS 'identity';";

// 执行数据库操作
SqlCommand myCommand = new SqlCommand(insert_query, new SqlConnection(ConnStr));
myCommand.Connection.Open();
myLabel.Text = myCommand.ExecuteScalar().ToString();
myCommand.Connection.Close(); --------------------编程问答-------------------- hertcloud(·£孙子兵法£·) ( ) 信誉:100    Blog  2007-03-14 16:33:15  得分: 0  
 
 楼主 既然是 读取 最后一条
何不 直接select top 1 呢!


支持
  
 
--------------------编程问答-------------------- 如果没有特殊要求的话,可以在sql语句上处理:

select top 1 from 
(
--子查询
select * from a
) as b
order by DESC

然后SqlDataReader.Read的第一条也是唯一一条也是你想要的数据集的最后一条. --------------------编程问答-------------------- select top 1 --------------------编程问答--------------------
select top 1 from 
(
--子查询
select * from a where {条件} 
) as b
order by id DESC --------------------编程问答-------------------- 是数据集尾


这是asp版的,
sqlOrder="select * From 表"
set rsOrder=server.CreateObject("adodb.recordset")
rsOrder.open sqlOrder,conn,1,3
i=1
do while not rsOrder.eof
--执行操作       
rsOrder.movenext
loop
rsOrder.movenext
if rsOrder.eof then
--执行操作
else
--执行操作
end if
rsOrder.close
set rsOrder=nothing

我现在想在C# 用datareader代替rs --------------------编程问答-------------------- hertcloud(·£孙子兵法£·) ( ) 信誉:100    Blog  2007-03-14 16:33:15  得分: 0  
 
 楼主 既然是 读取 最后一条
何不 直接select top 1 呢!

-----------
这个我当然会啦!!

我现在是想实现上面的功能 --------------------编程问答-------------------- 高手在吗?

这是asp版的,
sqlOrder="select * From 表"
set rsOrder=server.CreateObject("adodb.recordset")
rsOrder.open sqlOrder,conn,1,3
i=1
do while not rsOrder.eof
--执行操作       
rsOrder.movenext
loop
rsOrder.movenext--------------------------注意这里
if rsOrder.eof then
--执行操作
else
--执行操作
end if
rsOrder.close
set rsOrder=nothing

我现在想在C# 用datareader代替rs
--------------------编程问答-------------------- datereader是轻量级的,只读的,只能向前逐条滚动 --------------------编程问答-------------------- 那有其它方法吗 --------------------编程问答-------------------- dr.close()
之后就可以获得记录总数
有个属性叫什么effecitrecords就可以了 --------------------编程问答-------------------- 呵呵 --------------------编程问答-------------------- datereader是轻量级的,只读的,只能向前逐条滚动

说的没错。 --------------------编程问答-------------------- 先获取总行数.
int count=dr.rows.count;
然后
string userName=dr.rows[count-1].columns["name"].tostring(); --------------------编程问答-------------------- 如果你的是自动编号的话。也可以用select max("自动编号列“) from 表
--------------------编程问答-------------------- chuxue1342(@楚}===天{==========雪饮>) 

========================
请看清楚题目........
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,