Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MySqlCommand.ExecuteScalar()不返回任何内容_C#_Asp.net_Mysql_Sql - Fatal编程技术网

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。无论如何,我成功地修复了它,出于安全原因,我修改了发送给您的查询,并意外地删除了重要的第二个查询项。正是在这个条件下,问题才存在。非常感谢。