我有一个由 OleDb 查询编辑的 Access 2000 (*.mdb) 文件。
目前,我想将一个表更新
到只有两列的数据库中,如下图所示
此数据库的每一列都是 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(或更可能:运算符(operator))。奇怪的是 it doesn't show up in the JET documentation 。
因此,您需要通过使用 []
转义列名称来确保数据库引擎知道它是列名称:
UPDATE [OPTIONS] SET VAL='C:\\Edo\\Desktop\\Logo.png' WHERE [IMP] = 'LogoPath'
关于C# - UPDATE SET WHERE 查询问题 (OleDb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37100889/