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

标签 c# sql oledb oledbcommand

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

目前,我想将一个表更新到只有两列的数据库中,如下图所示

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();
}

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

最佳答案

答案并不像我们最初想象的那么明显,但我想我找到了: 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/

相关文章:

c# - 确定列表是否为空的最有效方法

c# - 如何从 .Net core 2.0 中的 HttpContext 获取访问 token

mysql - 当列不为空时,使用 SQL 从图库表中选择图像

c# - 如何最小化 OleDbDataAdapter 从远程数据库获取数据的时间

c# - 为什么 OleDb ExecuteScalar 方法在查询 COUNT 时返回 Decimal?

C#:循环查找函数的最小值

c# - Directory.GetFiles 使用 SearchPattern 返回意外结果

php - 我正在 PHP 中访问 MySQL 表,但它没有执行 if 条件并直接显示表

php - mysql 到 PDO 这个查询有什么问题?

c# - 如何打印参数化的 SQL 查询?