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
来获取所有记录。
但实际上您可以将 ExecuteScalar
与 SELECT *
一起使用。结果集中第一行的第一列被returned,或者如果结果是null引用集合为空。
自从您获得 NULL
后,过滤器似乎没有 return 记录。
由于您需要计数,您可以将查询更改为:
queryShelf = "SELECT COUNT(*) FROM shelftable WHERE ShelfId= @ShelfId";
// ...
int Count = (int) cmd.ExecuteScalar();
现在你永远不会得到 null
但记录数,如果没有记录存在则为 0 ShelfId
。
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
来获取所有记录。
但实际上您可以将 ExecuteScalar
与 SELECT *
一起使用。结果集中第一行的第一列被returned,或者如果结果是null引用集合为空。
自从您获得 NULL
后,过滤器似乎没有 return 记录。
由于您需要计数,您可以将查询更改为:
queryShelf = "SELECT COUNT(*) FROM shelftable WHERE ShelfId= @ShelfId";
// ...
int Count = (int) cmd.ExecuteScalar();
现在你永远不会得到 null
但记录数,如果没有记录存在则为 0 ShelfId
。