SQL执行标量返回NULL

时间:2015-06-15 11:34:29

标签: c# sql executescalar

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 个答案:

答案 0 :(得分:1)

ExecuteScalar用于返回单值,您正在选择完整记录。因此,通常您使用ExecuteReader并使用Read来获取所有记录。

但实际上您可以将ExecuteScalarSELECT *一起使用。如果结果集为空,则会返回结果集中第一行的第一列,或者返回 null 引用。

由于您获得NULL,过滤器似乎无法返回记录。

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

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

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