【问题标题】:"System.Data.OleDb.OleDbException: 'Syntax error in INSERT INTO statement.'" [duplicate]“System.Data.OleDb.OleDbException:'INSERT INTO 语句中的语法错误。'”[重复]
【发布时间】:2022-03-31 17:00:20
【问题描述】:

我收到一条错误消息:

System.Data.OleDb.OleDbException: 'INSERT INTO 语句中的语法错误。'

我已经阅读了多个问题,例如this,但他们的回答都没有帮助我。

这是我的代码:

conn.Open();

string sql = "";
sql = "insert into player(Username, Password) values(@Username, @Password)";

using (command = new OleDbCommand(sql, conn))
{
    command.Parameters.AddWithValue("@Username", textBoxUsername.Text);
    command.Parameters.AddWithValue("@Password", textBoxPassword.Text);
    command.ExecuteNonQuery();
}
command.Dispose();
conn.Close();

错误在以下行:

command.ExecuteNonQuery();

有人知道这个错误的解决方法吗?

提前致谢!

【问题讨论】:

  • 你连接的是什么数据库?尝试使用values(?, ?) 语法。
  • OleDb 是一个非常通用的 API,可以与多个数据库通信;如果您正在与 specific 数据库通信,通常最好使用该数据库的特定 API - 例如,SqlConnection/SqlCommand 等用于 SQL Server。这将允许您使用该目标数据库的全部功能,例如命名参数。坦率地说,OleDb 相当……嗯,最小。如现有答案等所述,它不支持命名参数。
  • 顺便说一句:首先使用参数做得很好;您会惊讶于我们看到 SQL 连接值的频率!
  • 我使用的是 Acces 数据库,因此 SqlCommand 对我不起作用。数据库的目标不是问题,因为从中读取效果非常好。我发现我的问题是使用“密码”作为列名。将其更改为“Passw”解决了它。无论如何感谢您的帮助!

标签: c# database


【解决方案1】:

把你的sql改成

sql = "insert into player(Username, Password) values(?, ?)"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多