2015-06-15 69 views
-1
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() + ""); 
+3

你的問題到底是什麼?查詢返回的第一行的第一列是什麼? –

+2

請勿在查詢中使用*。你需要返回一個值,而不是數組的「數組」 –

回答

1

ExecuteScalar用於返回單個值,您選擇完整的記錄。所以通常您使用ExecuteReader並使用Read來獲取所有記錄。

但實際上你可以使用ExecuteScalarSELECT *。如果結果集爲空,會返回結果集中第一行的第一列null

既然你得到NULL看來過濾器不會返回記錄。

既然你想有一個數,您可以將您的查詢更改爲:

queryShelf = "SELECT COUNT(*) FROM shelftable WHERE ShelfId= @ShelfId"; 
// ... 
int Count = (int) cmd.ExecuteScalar(); 

現在,你永遠不會得到null但記錄的計數,0,如果沒有記錄本ShelfId存在。

+0

謝謝@蒂姆。 –