2009-12-15 29 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)」異常的這一特定原因。