有人能告诉我为什么它在查询中抛出语法错误吗

本文关键字:语法 错误 查询 告诉我 为什么 | 更新日期: 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]