C# 解決讀取dbf文件,提示Microsoft Jet 數據庫引擎找不到對象的問題


前言

  最新項目需要經常和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 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM