2009-12-15 68 views
2

我在MS-Access数据库中创建一个名为“PathTable”的表。 表是这样的:OleDbCommand无法执行此命令,为什么?

------------------------------ 
| 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 *”?谢谢。

回答

2

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

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

不会将它们视为字符串字面量达林吗? – 2009-12-15 07:28:05

+0

你说得对。应使用方括号。 – 2009-12-15 07:29:44

+0

我可以获得部分学分吗? :) – 2009-12-15 07:42:54

0

这是可能的“输入”和“输出”被保留在访问SQL话让尝试添加围绕这些字段名称[]方括号。

+0

不仅从SQL-92开始访问SQL,而且访问ODBC和ISO/ANSI标准SQL。 – onedaywhen 2009-12-15 09:09:59

0

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

【输入】 [输出]

0

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

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