OleDbCommand无法执行此命令,为什么?

时间:2009-12-15 07:22:45

标签: ms-access oledb oledbcommand

我在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 *”吗?感谢。

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

[输入] [输出]

答案 4 :(得分:0)

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

我发现在尝试打开文件之前执行“File.Exists”非常有用,只是为了确保我的代码检测到“IErrorInfo.GetDescription失败并且E_FAIL(0x80004005)”异常的特定原因。