查询中的语法错误,但查询是正确的

时间:2018-05-02 17:08:29

标签: c# mysql

我写了一个通用的方法来搜索特定表中是否存在值,该方法非常简单:

public bool CheckRecordExist(int id, string tableName, string column)
{
    string connection = string.Format("Server=localhost; database={0}; UID=root; password=root; SslMode=none; CharSet=utf8;", "myDb");
    MySqlConnection conn = new MySqlConnection(connection);

    string query = "SELECT * FROM " + tableName + " WHERE " + column " = @" + column;
    MySqlCommand = new MySqlCommand(query, conn);
    MySqlCommand.Parameters.AddWithValue("@" + column, id);

   return Convert.ToBoolean(MySqlCommand.ExecuteScalar());
}

假设我想检查表匹配中是否存在标识为2538782的记录,我这样做:

CheckRecordExist(2538782, "match", "id");

所以query变量将是:

SELECT * FROM match WHERE id = @id

如果我在PhpMyAdmin中运行此代码,用值替换id,我会得到正确的答案,但在我的应用程序中我会得到:

  

MySql.Data.MySqlClient.MySqlException:'您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行'match WHERE id = 2538782'附近使用正确的语法

出了什么问题?

1 个答案:

答案 0 :(得分:3)

请参阅https://dev.mysql.com/doc/refman/5.7/en/keywords.html

MATCH是MySQL中的保留关键字。

只有将保留字用作分隔符时,才能使用保留字作为标识符。 MySQL的标识符默认分隔符是后退。

请参阅https://dev.mysql.com/doc/refman/5.7/en/identifiers.html