2012-02-21 68 views
1

我繼承了一些C#代碼。它處理舊的dBase文件。至少3 - 5年沒有人觸及代碼,並且編譯版本可以在某處運行,但我無法訪問它。現在,我嘗試它是如何工作的,從源重新編譯它在哪裏它應該運行(相同的架構,充分尋找驅動程序)一樣美觀的環境,它給了我下面的錯誤:爲什麼我無法訪問我的ODBC dBase表?

[42S02] [Microsoft][ODBC dBase driver] A Microsoft Jet database engine could not find the object 'test'. Make sure the object exists and that you spell its name and the path name correctly. 

編輯 )上

dbCommand.CommandText = "SELECT Count(*) FROM test"; 
recNum = (int)dbCommand.ExecuteScalar(); 

EDIT)的與所述連接字符串

OdbcConnection connection = new OdbcConnection(String.Format("driver={{Microsoft dBase Driver (*.dbf)}};DriverID=533;Dbq={0};Exclusive=1;", path)); 
第二線

我試着在Google上找到明顯的解決方案,比如確定文件是否真的存在,更改文件名等等。所以,我非常確定該文件應該在哪裏,我非常確定該文件沒有被損壞(我可以用我從互聯網上下載的一些共享軟件打開它,更不用說在過去的3 - 5年內文件沒有改變)。這是我第一次使用dBase和ODBC,所以我可能會錯過一些顯而易見的東西。

我還可以嘗試使其工作嗎?

+0

您可以在失敗的行提供代碼? – 2012-02-21 10:09:45

+0

我在x64機器上使用C#代碼時發現問題。在我的情況下,我將目標輸出更改爲x86並運行。但同時,我還必須檢查機器上的dBase驅動程序是否存在。這是最痛苦的部分!但是,幸運的是,我可以訪問安裝程序的生產版本,該版本安裝所有必需的驅動程序和安裝後的工作! – Nauman 2012-02-21 10:27:49

+0

編輯添加。該體系結構與以前(x86)相同,dBase驅動程序應該是相同的。或者我不知道如何分辨是否有區別。可悲的是生產版本安裝程序不安裝任何驅動程序。 – ytg 2012-02-21 10:39:37

回答

0

檢查您是否配置了ODBC數據源(開始>設置>控制面板> ODBC)。 數據源的名稱必須包含在Connection對象的連接字符串中。 表測試必須是配置的數據源指向的數據庫的表。

+0

這看起來很有希望,直到我在目錄上設置一個文件DSN。也許我做了一些非常錯誤的事情,但它只是在目錄中創建了一個'.dsn'文件。這有點可疑,因爲如果是這樣,文件應該已經存在。更何況,它似乎根本沒有指向數據庫表。 (僅限於目錄。)如果有問題,我正在使用XP。 – ytg 2012-02-22 07:35:41

+0

dsn文件只是一個包含ODBC配置參數的文件。我寧願創建一個用戶DSN。單擊添加,選擇您要使用的dBase文件和dBase ODBC驅動程序並輸入配置參數。在您的應用程序中,您必須在連接字符串中引用該數據源。 – 2012-02-22 10:43:07

+0

有了它,它仍然不起作用。無論如何,原始連接字符串中沒有任何數據源,因此它可能以其他方式處理該事物。 (將連接字符串添加到原始問題中。) – ytg 2012-02-22 11:53:15

0

很多人喜歡在舊的.dbf文件上使用Jet,但實際上它們可能不是dBASE,但實際上是Foxpro(略有不同的標題信息)。您實際上可能需要下載和使用VFP OleDB提供程序。

我有answered previous questions幫助顯示/描述連接,此外,還有一個鏈接到微軟獲取/下載最新的Visual Foxpro OleDB提供程序。

只是關於連接字符串的說明。即使.dbf文件不是「數據庫」的一部分,也不是「空閒表」的一部分,您可能希望連接到數據所在的物理PATH,然後根據表的名稱進行查詢以獲取數據。

相關問題