C# MySqlCommand.ExecuteScalar()不返回任何内容
当我运行以下代码时:C# MySqlCommand.ExecuteScalar()不返回任何内容,c#,asp.net,mysql,sql,C#,Asp.net,Mysql,Sql,当我运行以下代码时: query = "select count(*) from table where name = '?name'"; MySqlConnection connection = new MySqlConnection(ConfigurationManager.ConnectionStrings["mydb"].ToString()); connection.Open(); MySqlCommand command = new My
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,没有骰子。我已经尝试了命令.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);
为了获得更好的代码
- 使用
使用
进行适当的物体处理
- 使用
块正确处理异常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
}
}
}
谢谢你提出的改进我代码的建议,我目前遇到了一个问题,数据库连接太多,这会有很大帮助。但是,当尝试通过强制转换或使用convert.ToInt32()将其转换为int32时,标量的值始终为0。无论如何,我成功地修复了它,出于安全原因,我修改了发送给您的查询,并意外地删除了重要的第二个查询项。正是在这个条件下,问题才存在。非常感谢。