2012-09-18 131 views
3

我需要編寫一個使用C#.net編輯特定.mdb文件的應用程序。c#.net閱讀.mdb文件

它純粹是一個閱讀部門內部應用程序,可以辯論不應該是.mdb文件,但我沒有在這方面的選擇。我正在努力改變XML文件,但這是另一回事。

這些文件是非常有限的,3個表,每個100個記錄;所以我希望將整個數據庫讀入特定於應用程序的對象。任何錯誤的將被忽略,新的數據庫副本將覆蓋前一個。數據庫是一個非常具體的格式,容易讓我驗證或拋出。

似乎有很多方法可以在.net中實際讀取/寫入mdbs,這讓我感到困惑。任何人都可以提出一個最好的?

+0

也許你可以使用訪問API acomplish這一點。 – Amedio

+0

你想編輯什麼?表格,記錄還是別的?爲什麼不使用標準的oledb或ado.net呼叫? – nawfal

回答

1

您可以使用此代碼嘗試 - 基於Oledb provider

var mdb = "c:\MyDB.mdb"; 
var myDataTable = new DataTable(); 
using(var connection = new OleDbConnection(.....")) 
{ 

//Here sample format of string connection 
//"Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" 
//+ mdb + ";Mode=Share Deny None;Extended Properties='';Jet OLEDB:System database='';Jet OLEDB:Registry Path='';Jet OLEDB:Engine Type=4;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False 


connection.Open(); 
var query = "SELECT * from TABLE"; //Adjust your query 

var adapter = new OleDbDataAdapter(query, connection); //This assigns the Select statement and connection of the data adapter 

OleDbCommandBuilder oleDbCommandBuilder = new OleDbCommandBuilder(adapter); //This builds the update and Delete queries for the table in the above SQL. this only works if the select is a single table. 

dadapt.Fill(MyDataTable); 

} 
0

我建議你使用Jet Engine的ODBC驅動程序,它可以與ADO.NET一起使用。