【发布时间】: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”解决了它。无论如何感谢您的帮助!