5

C# でクエリのレコード数を取得する方法を知りたいです。

これが私が使用するコードです..

    MySqlDataReader recordset = null;
    query = new MySqlCommand("SELECT * FROM test ORDER BY type_ID ASC", this.conn);
    recordset = query.ExecuteReader();


    while (recordset.Read())
    {
        result.Add(recordset["type_ID"].ToString());

    }
    return result;
4

4 に答える 4

12

私はを使用していて、が返されることSELECT COUNT(*)を期待していました。int使用可能な値を取得するには、これが必要になる場合があります。

mysqlint = int.Parse(query.ExecuteScalar().ToString());
于 2012-01-25T01:14:48.363 に答える
6

いくつかのこと...

使用する SQL ステートメントは次のとおりです。

SELECT COUNT(*) FROM テスト

ただし、MySQL Connector/Netを使用して C# 経由で MySQL に接続する場合、クエリ結果を処理する際に注意が必要です。

たとえば、この質問Microsoft Connect で引用されているように、一部のマシンではint.Parse("0")asInt32.Parse("0")を投げることができます。FormatException

Convert.ToInt32がこのケースをうまく処理することがわかりました。

したがって、コードは次のようになります。

using (var conn = new MySqlConnection(cs))
{
    conn.Open();
    using (var cmd = new MySqlCommand("SELECT COUNT(*) FROM test", conn))
    {
         int count = Convert.ToInt32(cmd.ExecuteScalar());
         return count;
    }
}

MySQL オブジェクトが適切に破棄されるようにするために、必ずusing ステートメントを使用してください。

于 2013-10-14T15:26:44.320 に答える
2

result各行に新しい要素を追加しています。タイプによっては、while ループが完了した後に次のresultようなことができるはずです。result.Count

于 2010-05-11T00:12:14.907 に答える
1

最初に別のクエリを実行して、カウントを取得できます。

query = new MySqlCommand("SELECT count(*) as theCount FROM test ORDER BY type_ID ASC", this.conn);

しかし実際には、問題を変更するのがおそらく最善であるため、リストにデータを入力するまでカウントは必要ありません。

于 2010-05-11T00:18:26.070 に答える