我在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),
但是如果我用
替换了commandStringSELECT * FROM PathTable WHERE IP = '127.0.0.1'
问题再也没有发生过。
所以,我的问题是:OleDbCommand只执行“select *”吗?感谢。
答案 0 :(得分:2)
也许这些是reserved个字。试着引用它们:
SELECT [Input], [Output] FROM PathTable WHERE IP = '127.0.0.1'
答案 1 :(得分:1)
我正在向您发送Microsoft保留字列表,请检查,您使用的是保留关键字,这就是您遇到此问题的原因。
答案 2 :(得分:0)
“输入”或“输出”可能是Access SQL中的保留字,因此请尝试在这些字段名称周围添加[]方括号。
答案 3 :(得分:0)
输入和输出可能是关键字。尝试用方括号包围它们。即。
[输入] [输出]
答案 4 :(得分:0)
找不到文件 - 此异常的另一个可能原因是,您尝试加载/读取的文件不存在。
我发现在尝试打开文件之前执行“File.Exists”非常有用,只是为了确保我的代码检测到“IErrorInfo.GetDescription失败并且E_FAIL(0x80004005)”异常的特定原因。