0

我正在尝试使用 SQL获取SqlDataReaderCOUNT()的行数。由于某些技术原因,我不能使用计数器(在转发时增加变量)。这是我的 SQL 语句:

(SELECT * FROM [Menus] WHERE MenuParent=@ID);
(SELECT COUNT(*) AS rowsCount FROM [Menus] WHERE MenuParent=@ID)

这是我的.net代码:(
很简单,C#ers也能看懂)

While DR.Read
    If Not DR("rowsCount") Is Nothing Then
    temp &= DR("rowsCount")
    End If
    'blah blah
End While

它不识别rowsCount

我怎么了?

整个功能:(我用自己的类连接到数据库)http://pastebin.com/YBZCvvBH

4

3 回答 3

4

您的 SQL 语句返回两个结果集。假设你的问题中SQL语句的顺序和你执行的顺序是一样的,你需要处理第一个查询返回的数据(处理各种菜单选项),然后执行:

DR.NextResult()

在尝试读取计数之前。

于 2013-01-30T19:12:18.573 回答
4

好吧,如果您真的想要结果集中的记录数

可以做到这一点,这似乎是你的查询

    select V.rowsCount,* from [Menus]
    cross join (select COUNT(*) as rowsCount from [Menus] WHERE MenuParent=@ID)V
            WHERE MenuParent=@ID

或者只是做

    select COUNT(*) over () as rowsCount
    ,* from [Menus]
    WHERE MenuParent=@ID
于 2013-01-30T19:25:03.833 回答
0
  • 为什么&=
  • 您正在选择两个记录集。如果您想要计数,请先单独进行。
于 2013-01-30T19:12:04.130 回答