【问题标题】:OleDbCommand can't excute this command, Why?OleDbCommand 不能执行这个命令,为什么?
【发布时间】:2009-12-15 07:22:45
【问题描述】:

我在 MS-Access 数据库中创建了一个名为“PathTable”的表。 表格是这样的:

------------------------------
| IP        | Input | Output |
------------------------------
| 127.0.0.1 | XXXXX | YYYYYY |
------------------------------

当我编写这些程序时

String CommandString = "SELECT Input, Output FROM PathTable WHERE IP = '127.0.0.1'";

OleDbCommand CommandObj = new OleDbCommand( CommandString, m_Connection );

OleDbDataReader ReaderObj = CommandObj.ExecuteReader();

代码总是抛出OleDbException,ErrorDescription是E_FAIL(0x80004005),

但如果我将 commandString 替换为

SELECT * FROM PathTable WHERE IP = '127.0.0.1'

这个问题再也没有发生过。

所以,我的问题是:OleDbCommand 是否只执行“select *”?谢谢。

【问题讨论】:

    标签: ms-access oledb oledbcommand


    【解决方案1】:

    也许这些是reserved 字。尝试引用它们:

    SELECT [Input], [Output] FROM PathTable WHERE IP = '127.0.0.1'
    

    【讨论】:

    • 不会把它们当作字符串字面量达林吗?
    • 谢谢你,达林。 “输入”和“输出”确实是 MS-Access 保留字。但我从来不知道。
    • 方括号的替代方案(这是邪恶的,会破坏派生表的标准 Access SQL 89 实现)是否完全限定字段,即“SELECT PathTable.Input, PathTable.Output”?
    • @David W. Fenton:Access 的 ANSI-89 查询模式对派生表的实现本身就是邪恶的。请注意,“SQL-89”指的是 SQL 标准,Access 用语是 ANSI-89。另请注意,标准 SQL 使用双引号(ascii 代码 0034)而不是方括号来转义关键字,因此此处暗指 SQL 标准是不恰当的。
    【解决方案2】:

    我正在向您发送 Microsoft 保留字列表,请检查,您使用的是保留关键字,这就是您遇到此问题的原因。

    http://support.microsoft.com/kb/321266

    【讨论】:

      【解决方案3】:

      “输入”或“输出”可能是 Access SQL 中的保留字,因此请尝试在这些字段名称周围添加 [] 方括号。

      【讨论】:

      • 不仅访问 SQL,而且从 SQL-92 开始的 ODBC 和 ISO/ANSI 标准 SQL。
      【解决方案4】:

      输入和输出可能是关键字。尝试用方括号将它们括起来。即

      [输入] [输出]

      【讨论】:

        【解决方案5】:

        找不到文件 - 此异常的另一个可能原因是您尝试加载/读取的文件不存在。

        我发现在尝试打开文件之前执行“File.Exists”很有用,只是为了确保我的代码正确检测到“IErrorInfo.GetDescription failed with E_FAIL(0x80004005)”异常的具体原因。

        【讨论】:

          猜你喜欢
          • 2021-10-17
          • 2013-01-28
          • 1970-01-01
          • 2016-06-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-17
          • 2019-10-31
          相关资源
          最近更新 更多