【发布时间】:2012-06-23 14:29:36
【问题描述】:
一个 SQL 聚合函数,用于计算 DB 中名称输入的数量。
string cnnStr = ConfigurationManager.ConnectionStrings["LGFConnectionString"].ConnectionString;
string mySQL = "SELECT COUNT(*) FROM " + which.table + " WHERE " + which.column + " = ?pram;";
string value = null;
using (MySqlConnection cnn = new MySqlConnection(cnnStr))
{
using (MySqlCommand cmd = new MySqlCommand(mySQL, cnn))
{
MySqlParameter param = new MySqlParameter("?pram", MySqlDbType.VarChar, 128);
param.Value = which.text;
cmd.Parameters.Add(param);
cnn.Open();
value = cmd.ExecuteScalar() as string;
value = cmd.ExecuteScalar().ToString();
cnn.Close();
}
}
请注意,我已致电cmd.ExecuteScalar 两次。有趣的部分是查询返回不同的结果。
value = cmd.ExecuteScalar() as string;
没有返回正确的值。如果 name 列中存在或缺少 name,则返回 null。
value = cmd.ExecuteScalar().ToString();
正确返回。如果存在则返回“1”,如果缺失则返回“0”。
在网上搜索,我没有找到可以理解的解释。
我已经读到,如果名称列中缺少名称,那么 cmd.ExecuteScalar 将返回 null。
有什么区别:
value = cmd.ExecuteScalar() as string;
value = cmd.ExecuteScalar().ToString();
谢谢你, 去狗
【问题讨论】:
-
在这里提出并回答了类似的问题:stackoverflow.com/questions/2099900/…
标签: c# null aggregate-functions tostring executescalar