2010-10-29 81 views

回答

1

您可以使用ODBCConnection。我知道foxpro正在使用.dbf文件。

OdbcConnection Conn = new OdbcConnection("Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=C:\\tbl.dbf;"); 
     String SQL = "SELECT * FROM tbl.dbf"; 
     Conn.Open(); 
     OdbcCommand MyCommand = new OdbcCommand(SQL,Conn); 
     OdbcDataReader dr = MyCommand.ExecuteReader(); 
     while (dr.Read()) 
     { 
      //your code 
     } 
+1

爲什麼要downvote?這不行嗎? – bbqchickenrobot 2013-06-28 02:32:05

+0

我不是downvoter,但對VFP6後的版本無效。 – 2015-09-18 22:33:33

+0

Visual FoxPro dbf與dBASE – Roel 2015-11-02 14:30:43

1

與RJ的回答providd「驅動程序」的例外,進入MS並獲得VFP OLEDB提供商......你可能有兼容性問題,如果處理數據庫容器。

7

您可以通過在OleDb.Connection類中使用GetSchema方法來完成此操作。

OleDbConnection connection = new OleDbConnection(
    "Provider=VFPOLEDB.1;Data Source=.\\Northwind\\Northwind.dbc;" 
); 
connection.Open(); 
DataTable tables = connection.GetSchema(
    System.Data.OleDb.OleDbMetaDataCollectionNames.Tables 
); 

foreach (System.Data.DataRow rowTables in tables.Rows) 
{ 
    Console.Out.WriteLine(rowTables["table_name"].ToString()); 
    DataTable columns = connection.GetSchema(
     System.Data.OleDb.OleDbMetaDataCollectionNames.Columns, 
     new String[] { null, null, rowTables["table_name"].ToString(), null } 
    ); 
    foreach (System.Data.DataRow rowColumns in columns.Rows) 
    { 
     Console.Out.WriteLine(
      rowTables["table_name"].ToString() + "." + 
      rowColumns["column_name"].ToString() + " = " + 
      rowColumns["data_type"].ToString() 
     ); 
    } 
}