2017-05-26 151 views
0

我已經連接到foxpro數據庫,但只有那些同時具有.dbf和.idx文件的。C#VFP OLEDB連接字符串問題(DBF和CDX與DBF和IDX)

我註冊Microsoft OLE DB提供程序的Visual FoxPro 7.0,使用下列類型的代碼:

string sqlSTR = "SELECT * FROM TableName"; 
    string strConnect = @"Provider=VFPOLEDB.1;Data Source=C:\Stuff.dbf;Extended Properties=dBASE IV;" 

並打開連接。不過,這個文件有一個.dbf和.cdx文件(在線閱讀似乎是數據庫的結構)。當我使用上面的連接字符串和下面的代碼:

OleDbConnection myConn = new OleDbConnection(strConnect); 
myConn.Open() 

它沒有錯誤或任何東西,但該方案的執行掛在這裏。我有同一個程序的幾個其他部分連接到帶有dbf + idx文件(不是cdx)的文件。我做錯了什麼,我需要糾正?

我使用sqlSTR進行以後使用數據適配器btw的操作。

+0

我很確定在連接字符串中對dBase IV的任何引用都是錯誤的。嘗試沒有這一部分。 –

+1

其實CDX文件是一個索引文件,而不是數據庫的結構。 – Hank

回答

1

爲任何有同樣問題的人發佈這個答案。

dBase IV的參考實際上並不重要;它適用於較早的DBF + IDX組合的foxpro文件,並且需要它(考慮早期的VFP或在VFP返回到foxpro 2.0天之前)。

我真的很遺憾的是* .dbc,* .dct和* .dcx文件在同一個目錄中,並且與它相關聯。它扔了我,因爲這些文件實際上是一個不同於Stuff.dbf/Stuff.cdx文件的基本文件名。

我剛剛使用了一個try {} catch {}並將異常放入messagebox,它告訴我它正在查找哪個(不同的named)文件。

感謝您的幫助!

1

您的連接字符串錯誤。它應該是這樣的:

string sqlSTR = "SELECT * FROM TableName"; 
string strConnect = @"Provider=VFPOLEDB;Data Source=C:\;" 

使用c:\​​作爲數據庫文件(或其他文件)的位置是有問題的。

+0

@J W,切廷是正確的。問題是連接應該指向文件所在的PATH,而不是你正在查詢的表的全名。我只能假設你將連接簡化爲C:\的根目錄,但是否則會在其他路徑中。 – DRapp