有人能告诉我为什么它在查询中抛出语法错误吗
本文关键字:语法 错误 查询 告诉我 为什么 | 更新日期: 2023-09-27 18:20:29
它说我的语法有问题,但我不知道如何解决。我的数据库确实包含这些列。
string Query = "INSERT into Users (full_name, email, password, admin) VALUES (@name,@email,@password,@admin)";
try
{
OleDbConnection con = new OleDbConnection(@" provider=Microsoft.ace.Oledb.12.0; data source=" + dbString);
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@name", nameTB.Text);
cmd.Parameters.AddWithValue("@email", emailTB.Text);
cmd.Parameters.AddWithValue("@password", passTB.Text);
cmd.Parameters.AddWithValue("@admin",'0');
cmd.CommandText = Query;
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
使用
string Query = "INSERT into Users ([full_name], [email], [password], [admin]) VALUES (@name,@email,@password,@admin)";
因为密码是OLE DB中的一个保留关键字,如您所见。
如果您在谷歌上搜索错误消息,您会发现第一个结果警告您不能在Access SQL语句中使用保留字。
查看Jet 4.0保留字列表,您会发现PASSWORD
是一个保留字。
您必须重命名列或将其括在方括号中,例如[Password]