1.前言:
DBF為dBASE/VFP的資料庫格式,透過使用OLEDB/ODBC的方式,可以讀取資料庫的內容。
2.說明:
程式碼:
//範例一: 利用Oledb讀取DBF資料庫
public static OleDbConnection OleDbDbfOpenConn(string DatabaseDirectory)
{
string cnstr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DatabaseDirectory + "; Extended Properties=dBASE IV; User ID=Admin; Password=;");
OleDbConnection icn = new OleDbConnection();
icn.ConnectionString = cnstr;
if (icn.State == ConnectionState.Open) icn.Close();
icn.Open();
return icn;
}
public static DataTable GetOleDbDbfDataTable(string DatabaseDirectory, string OleDbString)
{
DataTable myDataTable = new DataTable();
OleDbConnection icn = OleDbDbfOpenConn(DatabaseDirectory);
OleDbDataAdapter da = new OleDbDataAdapter(OleDbString, icn);
DataSet ds = new DataSet();
ds.Clear();
da.Fill(ds);
myDataTable = ds.Tables[0];
if (icn.State == ConnectionState.Open) icn.Close();
return myDataTable;
}
//範例二: 利用Odbc讀取DBF資料庫
public static OdbcConnection OdbcDbfOpenConn(string Database)
{
string cnstr = "Driver={Microsoft dBase Driver (*.dbf)}; SourceType=DBF; SourceDB=" + Database + "; Exclusive=No; Collate=Machine; NULL=NO; DELETED=NO; BACKGROUNDFETCH=NO;";
OdbcConnection icn = new OdbcConnection();
icn.ConnectionString = cnstr;
if (icn.State == ConnectionState.Open) icn.Close();
icn.Open();
return icn;
}
public static DataTable GetOdbcDbfDataTable(string Database, string OdbcString)
{
DataTable myDataTable = new DataTable();
OdbcConnection icn = OdbcDbfOpenConn(Database);
OdbcDataAdapter da = new OdbcDataAdapter(OdbcString, icn);
DataSet ds = new DataSet();
ds.Clear();
da.Fill(ds);
myDataTable = ds.Tables[0];
if (icn.State == ConnectionState.Open) icn.Close();
return myDataTable;
}
3.應用:
//範例一: 利用Oledb讀取DBF資料庫 string databaseDirectory = @"d:\tmp"; string database = "World.dbf"; string sql = "select * from " + database; DataTable dt = GetOleDbDbfDataTable(databaseDirectory, sql); //範例二: 利用Odbc讀取DBF資料庫 string database = @"d:\tmp\World.dbf"; string sql = "select * from " + database; DataTable dt = GetOdbcDbfDataTable(database, sql);
圖例:
請先 登入 以發表留言。