我有一个Access 2000(* .mdb)文件,由OleDb Queries编辑。
目前我想UPDATE
将一张表放入一个只有两列的数据库中,如下图所示
此数据库的每一列都是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();
}
我知道这很简单,但我找不到解决办法 谢谢。
答案 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'