我写了一个通用的方法来搜索特定表中是否存在值,该方法非常简单:
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'附近使用正确的语法
出了什么问题?
答案 0 :(得分:3)
请参阅https://dev.mysql.com/doc/refman/5.7/en/keywords.html
MATCH
是MySQL中的保留关键字。
只有将保留字用作分隔符时,才能使用保留字作为标识符。 MySQL的标识符默认分隔符是后退。