none
判断最后一条记录 RRS feed

  • 问题

  • 我想知道使用while ... end while 中如何判断最后一条记录,类似于asp中的rs.eof那样,请各位前辈指点..........
    做个好汉子,每天要自强------自强不熄
    2010年3月15日 5:11

答案

  • 就我的经验和所查到的结果分析,貌似ADO.NET没有直接提供这样的功能哦。

    我的意见是,假如要读取最后一条记录,不如在SQL上做文章——比如假设存在一张表,且没有主键,那么您可以在2005、2008做如下操作:

    SELECT TOP 1 row_number() over (order by CategoryName asc), [CategoryID]
          ,[CategoryName]
          ,[Description]
          ,[Picture]
      FROM [Northwind].[dbo].[Categories]

    然后直接使用SQLDataReader配合SqlCommand的CommandBehaviour.CloseConnection | CommandBehaviour.SingleResult 加速查询返回一行结果。
    2010年3月18日 8:52

全部回复

  • 检查你的数据源是否有提供方法或者属性表示记录指针到了末尾。
    ADO.Net里面的类太多,无法一一列举。


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年3月15日 22:44
    版主
  • 感谢版主,我的数据库是SQL 2008 SP1 CU4版本的,不知道支持不支持记录指针;我的代码如下:

    If reader.read() Then

           While (reader.read())

                If 记录已经到达最后一条 Then
                    DataStr = "最后一条记录"
                Else
                    DataStr = "当前记录" & reader.item("ITEM")
                End If

           End While

    End If
    做个好汉子,每天要自强------自强不熄
    2010年3月16日 2:23
  • 就我的经验和所查到的结果分析,貌似ADO.NET没有直接提供这样的功能哦。

    我的意见是,假如要读取最后一条记录,不如在SQL上做文章——比如假设存在一张表,且没有主键,那么您可以在2005、2008做如下操作:

    SELECT TOP 1 row_number() over (order by CategoryName asc), [CategoryID]
          ,[CategoryName]
          ,[Description]
          ,[Picture]
      FROM [Northwind].[dbo].[Categories]

    然后直接使用SQLDataReader配合SqlCommand的CommandBehaviour.CloseConnection | CommandBehaviour.SingleResult 加速查询返回一行结果。
    2010年3月18日 8:52
  • 谢楼上,我去消化。。。。。
    做个好汉子,每天要自强------自强不熄
    2010年3月18日 12:24