MySqlCommand.ExecuteScaler()未返回任何内容
本文关键字:返回 任何内 ExecuteScaler MySqlCommand | 更新日期: 2023-09-27 17:58:20
当我运行以下代码时:
query = "select count(*) from table where name = '?name'";
MySqlConnection connection =
new MySqlConnection(ConfigurationManager.ConnectionStrings["mydb"].ToString());
connection.Open();
MySqlCommand command = new MySqlCommand(query,connection);
command.Parameters.Add("?name", name);
Int32 number = command.ExecuteScalar();
即使转换为整数,number
也始终为零
我试过把它转换成int64,没有骰子。我试过command.Prepare()
。我尝试过使用Convert.ToInt32()
和其他变体。我几乎尝试过所有的事情,包括逐字逐句地引用这句话,但我没有成功。试图将对象强制转换为整数、long和int32,这些似乎都不起作用。这些结果始终为0或导致MySQL错误。
编辑:堆栈溢出不会在代码标签中正确格式化该代码,我向道歉
原因是参数用单引号括起来,从而使其成为字符串。删除它,它会工作,
query = "select count(*) from table where name = @name";
MySqlConnection connection = new MySqlConnection(ConfigurationManager.ConnectionStrings["mydb"].ToString());
connection.Open();
MySqlCommand command = new MySqlCommand(query,connection);
command.Parameters.Add("@name", name);
为了获得更好的代码,
- 使用
using
进行正确的对象处理 - 使用
try-catch
块正确处理异常
代码段,
query = "select count(*) from table where name = @name";
string connString =ConfigurationManager.ConnectionStrings["mydb"].ToString();
using(MySqlConnection connection = new MySqlConnection(connString))
{
using(MySqlCommand command = new MySqlCommand(query, connection))
{
command.Parameters.Add("@name", name);
try
{
connection.Open();
// other codes
}
catch(MySqlException ex)
{
// do somthing with the exception
// don't hide it
}
}
}