2010-10-29 4 views

Répondre

1

Vous pouvez utiliser ODBCConnection. Je sais que foxpro utilise des fichiers .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

pourquoi downvote? Est-ce que ça ne marche pas? – bbqchickenrobot

+0

Je ne suis pas le downvoter, mais cela ne fonctionnerait pas avec les versions après VFP6. –

+0

Visual FoxPro dbf n'est pas le même que dBASE – Roel

1

À l'exception du « conducteur » providd par la réponse de RJ, allez à MS et obtenir le fournisseur VFP OleDB ... Vous pourriez avoir des problèmes de compatibilité si le traitement avec un conteneur de base de données.

7

Vous pouvez accomplir cela en utilisant la méthode GetSchema dans la classe 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() 
     ); 
    } 
} 
Questions connexes