C# - UPDATE SET WHERE 查询问题 (OleDb)

C# - UPDATE SET WHERE Query issues (OleDb)

我有一个由 OleDb 查询编辑的 Access 2000 (*.mdb) 文件。

目前我想 UPDATE 一个 table 到只有两列的数据库中,如下图所示

这个数据库的每一列都是String

类型

此代码显示 OleDbException:

OleDbConnection con;
OleDbCommand cmd;

private void UpdateExistingRow()
{
    string strProvider = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + path + ";"
    string strSql = "UPDATE OPTIONS SET VAL='C:\Edo\Desktop\Logo.png' WHERE IMP='LogoPath'";
    con = new OleDbConnection(strProvider);
    cmd = new OleDbCommand(strSql, con);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
}

这看起来很简单,我知道,但我找不到解决方案。
谢谢。

答案并不像我们最初想象的那么明显,但我想我找到了: IMP is a reserved keyword in Access SQL (or more likely: an operator). Strangely though it doesn't show up in the JET documentation.

因此您需要通过使用 []:

转义您的列名来确保数据库引擎知道它是一个列名
UPDATE [OPTIONS] SET VAL='C:\Edo\Desktop\Logo.png' WHERE [IMP] = 'LogoPath'