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'
我有一个由 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'