2010-10-29 31 views

Trả lời

1

Bạn có thể sử dụng ODBCConnection. Tôi biết Foxpro đang sử dụng các tệp .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

lý do tại sao bạn downvote? Điều này không hoạt động? – bbqchickenrobot

+0

Tôi không phải là downvoter, nhưng quyền này sẽ không làm việc với các phiên bản sau khi VFP6. –

+0

Visual FoxPro dbf không giống như dBASE – Roel

1

Ngoại trừ nhà cung cấp "Driver" theo câu trả lời của RJ, truy cập MS và nhận nhà cung cấp VFP OleDB ... Bạn có thể gặp sự cố tương thích nếu giao dịch với vùng chứa cơ sở dữ liệu.

7

Bạn có thể thực hiện việc này thông qua việc sử dụng phương thức GetSchema trên lớp OleDb.Connection.

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() 
     ); 
    } 
} 
Các vấn đề liên quan