C# 解決讀取dbf檔案,提示Microsoft Jet 資料庫引擎找不到對象的問題

來源:互聯網
上載者:User

標籤:c#   base   sof   logs   message   兩種   microsoft   on()   nta   

前言

  最新項目需要經常和dbf檔案打交道,在實際情境中很多軟體需要和一些老的系統進行資料互動,而這些系統都在使用foxpro資料庫,讀取dbf檔案一般都是分為兩種情況:第一;安裝foxpro的驅動進行讀取,第二;不安裝驅動,使用ODBC進行讀取。

  具體如何設定DBF / FoxPro連接字串,可以參考一下這篇文章(https://www.connectionstrings.com/dbf-foxpro/)

方案一:安裝foxpro驅動

  可以到微軟官網(https://www.microsoft.com/en-us/download/details.aspx?id=14839)下載檔案“VFPOLEDBSetup.msi”進行安裝。再使用代碼讀取,如下所示:

 1             string filePath = @"C:\Temp\test.dbf";    //檔案路徑,如:C:\Temp\test.dbf 2             FileInfo fileInfo = new FileInfo(filePath); 3             string directoryName = fileInfo.DirectoryName;  //檔案夾目錄 4             string fileName = fileInfo.Name; 5  6             OleDbConnection conn = new OleDbConnection(); 7             string connStr = @"Provider=VFPOLEDB.1;Data Source=" + directoryName + ";Collating Sequence=MACHINE"; 8             conn.ConnectionString = connStr; 9             conn.Open();10 11             string strSql = @"SELECT * FROM " + fileName;12             OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);13             DataTable dt = new DataTable();14             da.Fill(dt);
方案二:不安裝驅動,使用ODBC讀取
 1         private void button1_Click(object sender, EventArgs e) 2         { 3             try 4             { 5                 string directoryPath = @"C:\Temp";//存放的dbf檔案夾目錄。 6                 string fileName = @"test.dbf";//dbf的檔案名稱,這裡比如是test.dbf 因為這裡做為表名,所以尾碼.dbf可以省略,直接是test也可以的。 7                 string strConn = @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + directoryPath; 8  9                 System.Data.Odbc.OdbcConnection odbcConn = new System.Data.Odbc.OdbcConnection();10                 odbcConn.ConnectionString = strConn;11                 odbcConn.Open();12 13                 string strSql = @"SELECT * FROM " + fileName;14 15                 OdbcDataAdapter oda = new OdbcDataAdapter(strSql, odbcConn);16                 DataTable dt = new DataTable();17                 oda.Fill(dt);18 19                 dataGridView1.DataSource = dt;20                 odbcConn.Close();21             }22             catch (Exception ex)23             {24                 MessageBox.Show(ex.Message);25             }26         }
ODBC讀取異常問題

  實際過程當中,我們經常會碰到一個問題即:提示Microsoft Jet 資料庫引擎找不到對象的問題。

  但是!檢測了N遍,名稱和路徑都是沒有錯的,網上也查了很多相關資料,但是都沒有得到解決(問題是一樣,但是解決方案無效)。經過反覆測試,終於發現問題的所在:dbf檔案名稱不能超過8個字元,一旦超過8個字元,就會報這樣的錯。(為什麼會這樣不得而知~%>_<%)

  解決方案:將dbf檔案名稱控制在8個字元以內,暫時找不到更好的辦法

 

PS:如有疑問,請留言,未經允許,不得私自轉載,轉載請註明出處:http://www.cnblogs.com/xuliangxing/p/7690709.html 

  

  

C# 解決讀取dbf檔案,提示Microsoft Jet 資料庫引擎找不到對象的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.