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

时间:2016-05-08 14:26:21

标签: c# sql oledb oledbcommand

我有一个Access 2000(* .mdb)文件,由OleDb Queries编辑。

目前我想UPDATE将一张表放入一个只有两列的数据库中,如下图所示

enter image description here

此数据库的每一列都是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();
}

我知道这很简单,但我找不到解决办法 谢谢。

1 个答案:

答案 0 :(得分:2)

答案并不像我们最初想的那么明显,但我想我发现了: IMP is a reserved keyword in Access SQL(或更可能是:运营商)。奇怪的是it doesn't show up in the JET documentation

因此,您需要通过使用[]转义列名称来确保数据库引擎知道它是列名:

UPDATE [OPTIONS] SET VAL='C:\\Edo\\Desktop\\Logo.png' WHERE [IMP] = 'LogoPath'