queryShelf = "SELECT * FROM shelftable WHERE ShelfId= @ShelfId";
//Create Mysql Command
MySqlCommand cmd = new MySqlCommand(queryShelf, connection);
cmd.Parameters.Add(new MySqlParameter("@ShelfId", MySqlDbType.VarChar)).Value = MainWindow.shelfIds[i];
//ExecuteScalar will return one value
int Count = int.Parse(cmd.ExecuteScalar() + "");
1 に答える
1
ExecuteScalar
を使用して単一の値を返す場合、完全なレコードを選択しています。したがって、通常はすべてのレコードを取得するために使用しExecuteReader
、使用します。Read
ExecuteScalar
しかし、実際にはで使用できますSELECT *
。結果セットの最初の行の最初の列が返されるか、結果セットが空の場合はnull参照が返されます。
あなたが得たのでNULL
、フィルターはレコードを返さないようです。
カウントが必要なので、クエリを次のように変更できます。
queryShelf = "SELECT COUNT(*) FROM shelftable WHERE ShelfId= @ShelfId";
// ...
int Count = (int) cmd.ExecuteScalar();
これで、レコードの数だけを取得することはありません。null
これでレコードが存在しない場合は 0 ですShelfId
。
于 2015-06-15T11:38:46.717 に答える