14

C# を使用してテーブルのカウントを見つけようとしていますが、SqlDataReader取得し続けます

データが存在しない場合の無効な読み取り試行

私のコード:

string sql = "SELECT COUNT(*) FROM [DB].[dbo].[myTable]";

SqlCommand cmd = new SqlComman(sql, connectionString);
SqlDataReader mySqlDataReader = cmd.ExecuteReader();

int count = mySqlDataReader.GetInt32(0); // Here is where I get the error.

多くの場所で読み取りと書き込みができるため、データベースへの有効な接続があることはわかっていますが、COUNT(*)適切に読み取れないことの特別な点は何ですか? にデータを入力するにはどうすればint countよいですか?

4

2 に答える 2

26

あなたはそれを読む必要があります:

if (mySqlDataReader.Read()) {
  count = mySqlDataReader.GetInt32(0);
}

または、 ExecuteScalarを使用することもできます:

int count = (int)cmd.ExecuteScalar();

これは次のように定義されます。

クエリを実行し、クエリによって返された結果セットの最初の行の最初の列を返します。追加の列または行は無視されます。

于 2013-10-23T16:13:43.770 に答える