c# - MySQL 服务器错误 - 您的 SQL 语法有错误
问题描述
我正在尝试更新数据库表并收到错误
“MySql.Data.MySqlClient.MySqlException: '您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 'group='superadmin' 附近使用的正确语法 WHERE identifier='steam:steam: 1100001098b5888'' 在第 1 行'"
// Creates query to run
public void UpdateInfo(String jobTitle, int jobGrade, String adminLevel, String identifier) {
// Opens the database connection if it's not already open
if (!(databaseConnected)) {
openConnection();
}
// Creates query to run
String query = "UPDATE " + table + " SET job=@jobTitle, job_grade=@jobGrade, group=@adminLevel WHERE identifier=@identifier";
// Makes a new command
MySqlCommand cmd = new MySqlCommand(query, connection);
// Replaces the @ placeholders with actual variables
cmd.Parameters.AddWithValue("@jobTitle", jobTitle);
cmd.Parameters.AddWithValue("@jobGrade", jobGrade);
cmd.Parameters.AddWithValue("@adminLevel", adminLevel);
cmd.Parameters.AddWithValue("@identifier", identifier);
// Executes it and if it's...
if (cmd.ExecuteNonQuery() > 0) {
// Successful
MessageBox.Show("Successfully updated information");
closeConnection();
return;
} else {
// Not successful
MessageBox.Show("Error with updating information!");
// Closes the connection again to prevent leaks
closeConnection();
return;
}
}
解决方案
我在https://sqltest.net/上尝试了您的查询,并注意到当我尝试创建表时它突出显示了“组”。我想知道问题是否可能是使用“组”作为列名,因为它是一个保留字。
是否可以尝试将列重命名为 group_level 或在“组”或“组”周围添加反引号并查看是否有效?
所以例如
'组'=@grouplevel
我发现这个线程和这个线程重命名他们有问题的列作为列名。添加反引号似乎解决了这两个问题。
编辑:根据OP,双引号(“)解决了这个问题而不是单引号。编辑后的答案包括在内。
推荐阅读
- gradle - 如何防止 gradle 任务覆盖由调用 groovy 类创建文件的自定义任务创建的文件
- swift - Swift:自定义注释丢失字幕
- django-forms - 如何使用 Crispy 表单将 action 和 novalidate 属性添加到表单标签
- android - 如何为 viewPager2 设置适配器
- angular - Angular:仅允许通过模板访问组件成员
- python-3.x - 如何使用 django restframework 构建 django 模板
- google-cloud-platform - 使用自定义预测例程时没有这样的文件或目录:'/tmp/model/0001' google cloud ai platform
- java - 依赖项更新后 gradle build 损坏
- python - 如何在布尔列上的 df 的几列中进行聚合?
- mongodb - 如何在 mongoDB 中重命名数据库?