由于“SQL 语法”错误,无法插入到 MS Access 中
本文关键字:插入 MS Access SQL 语法 错误 由于 | 更新日期: 2023-09-27 18:35:12
我正在尝试插入MS Access,但是在"SQL语法"中出现错误。
我相信"密码"这个词是一个关键词。有没有办法在不更改数据库字段名称的情况下解决此问题?
OleDbCommand cmd = new OleDbCommand("INSERT INTO profiles(
user_name, full_name, password, profile_id)
VALUES (@user_name, @full_name, @password, @profile_id);");
cmd.Parameters.AddWithValue("@full_name", this.FullName);
cmd.Parameters.AddWithValue("@user_name", this.UserName);
cmd.Parameters.AddWithValue("@password", this.Password);
cmd.Parameters.AddWithValue("@profile_id", this.ProfileID);
编辑:
上面的代码中有一个错别字,我现在已经修复了。它没有出现在原始代码中,而是在我在此处编辑它后出现。正如许多人指出的那样,修复是括号。
将字段名称括在方括号中。
@passwords 和 @password 之间的不匹配无关紧要,因为在将 OleDb 与 Access 一起使用时,将忽略参数名称。 但是,您必须按照参数值在 INSERT
语句中显示的顺序提供参数值,---@user_name@full_name:
OleDbCommand cmd = new OleDbCommand("INSERT INTO profiles(user_name, full_name, [password], profile_id) VALUES (@user_name, @full_name, @passwords, @profile_id);");
cmd.Parameters.AddWithValue("@user_name", this.UserName);
cmd.Parameters.AddWithValue("@full_name", this.FullName);
cmd.Parameters.AddWithValue("@password", this.Password);
cmd.Parameters.AddWithValue("@profile_id", this.ProfileID);
从评论来看,我们似乎对密码是否是MS Access中的保留字存在分歧。 根据Microsoft的说法,它是一个保留字:Jet 4.0中的保留字列表
您可以将数据库字段放在引号或方括号中:
[password]
"password"
例如:
"INSERT INTO profiles(user_name, full_name, [password], profile_id)