gpt4 book ai didi

c# - MySqlCommand.ExecuteScalar() 不返回任何东西

转载 作者:行者123 更新时间:2023-11-29 01:30:30 24 4
gpt4 key购买 nike

当我运行以下代码时:

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 始终为零,即使在转换为 int 时也是如此。

我试过将它转换为 int64,不行。我试过 command.Prepare()。我尝试过使用 Convert.ToInt32() 和所有其他变体。我已经尝试了几乎所有的事情,包括逐字引用 this建议,我没有骰子。尝试将对象转换为整数、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 block 正确处理异常

代码片段,

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
}
}
}

关于c# - MySqlCommand.ExecuteScalar() 不返回任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14764748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com