SQL 执行返回 NULL 的标量

SQL execute scalar returning NULL

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() + "");

ExecuteScalar用于return一个单值,你选择的是完整记录。所以通常你使用 ExecuteReader 并使用 Read 来获取所有记录。

但实际上您可以将 ExecuteScalarSELECT * 一起使用。结果集中第一行的第一列被returned,或者如果结果是null引用集合为空。

自从您获得 NULL 后,过滤器似乎没有 return 记录。

由于您需要计数,您可以将查询更改为:

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

现在你永远不会得到 null 但记录数,如果没有记录存在则为 0 ShelfId