【问题标题】:Error from OleDbCommandBuilder query expression when updating Access database integer value更新 Access 数据库整数值时来自 OleDbCommandBuilder 查询表达式的错误
【发布时间】:2014-10-10 09:28:39
【问题描述】:

使用 C#,我在 Access 中直接使用的数据库出现问题。我使用了 OleDbDataAdapter、OleDbCommandBuilder 和 DataTable。更新命令由 OleDbCommandBuilder 生成。使用此更新命令会在 UPDATE 语句中产生语法错误。

作为测试,我创建了一个真正简单的 Access 数据库,其中包含 2 个字段:姓名和职位。使用我上面描述的确切代码(除了明显的更改),更新命令可以正常工作。然后我创建了另一个包含 5 个字段的数据库:名称、工作、ID、年份和国家,但这与上面的语法错误相同。我注释掉了不同的字段分配,直到我发现导致错误的是“年份”字段。 Id 和 Year 字段都是整数,其他字段是文本。它将更新 Id 字段和文本字段,但如果我包含 Year 字段,它将生成错误。这毫无意义!

任何人都可以理解这一点并提供帮助吗???有没有办法查看 OleDbCommandBuilder 正在使用的 SQL 更新表达式?

谢谢!

英灵殿

【问题讨论】:

  • 您能否发布您遇到问题的代码?

标签: c#


【解决方案1】:

'Year' 是 MS Access DB 中的保留字,请参阅 http://support.microsoft.com/kb/286335 。您可以将字段 Year 重命名为“_Year”之类的其他名称。

【讨论】:

    【解决方案2】:

    您必须将与 MS Access 中保留名称相对应的字段名称(如 Year)放在括号中(如:[Year])。

    【讨论】:

    • 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!! :) 哈哈,伙计……我想我现在开车时也得停下来问路……Loool!我浪费了很多时间来忽略一些基本的东西...... Arrggggggg! :) 谢谢!谢谢 !谢谢!!!!这可能是我正在使用的原始数据库的问题,因为我有类型长度等字段名称......虽然这些名称(包括“年份”)在 Access 中直接使用时并没有引起问题,但这很有趣...是的括号我忘记了...感谢所有回答这个问题的人!
    • 这是我在过去 8 年中获得的编程成果。
    • 哎呀......我松了一口气。我更改了原始数据库中所有有问题的字段,并使用更改后的版本运行程序,但即使我更改一个文本字段,它仍然会出现语法错误。这是它在弹出的错误对话框中显示的内容:
    • 查询表达式中的语法错误(缺少运算符)'((MOVIE = ?) AND ((? = 1 AND Genre IS NULL) OR (Genre = ?)) AND ((? = 1 AND Box Name IS NULL) OR (Box Name = ?)) AND ((? = 1 AND _Type IS NULL) OR (_Type = ?)) AND ((? = 1 AND _LENGTH IS NULL) OR (_LENGTH = ?)) AND ( (? = 1 AND Viewed IS NULL) OR (Viewed ='.
    • 什么是'?'你放在那里?
    猜你喜欢
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2012-05-22
    • 2013-12-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多