0

SQLでSqlDataReaderの行数を取得しようとしていますCOUNT()。いくつかの技術的な理由により、カウンターを使用できません(フォワーダーを進めるときに変数を増やします)。それは私の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を認識しません。

私の何が問題なのですか?

関数全体:(私は自分のクラスを使用してDBに接続しました)http://pastebin.com/YBZCvvBH

4

3 に答える 3

4

SQL ステートメントは 2 つの結果セットを返しています。質問の 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
  • なぜ&=ですか?
  • 2 つのレコードセットを選択しています。カウントが必要な場合は、最初に個別に行います。
于 2013-01-30T19:12:04.130 に答える