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() + "");
问问题
850 次
1 回答
1
ExecuteScalar
用于返回单个值,您正在选择完整的记录。所以通常你使用ExecuteReader
和使用Read
来获取所有记录。
但实际上你可以使用ExecuteScalar
with SELECT *
。发生的情况是返回结果集中第一行的第一列,如果结果集为空,则返回空引用。
既然你明白NULL
了,过滤器似乎没有返回记录。
由于您想要计数,您可以将查询更改为:
queryShelf = "SELECT COUNT(*) FROM shelftable WHERE ShelfId= @ShelfId";
// ...
int Count = (int) cmd.ExecuteScalar();
现在,您永远不会得到null
记录数,如果 this 不存在记录,则为 0 ShelfId
。
于 2015-06-15T11:38:46.717 回答