C # Lire des fichiers .DBF dans un datatable

Je dois me connecter à un fichier .dbf dans Visual Studio à l’aide de C # et remplir un tableau de données. Des idées? Je peux actuellement afficher les tables dans Visual Fox Pro 9.0

Code j’ai essayé et échoué, continue à obtenir

La table externe n’est pas au format attendu.

 private OleDbConnection conn; private OleDbCommand cmd; private OleDbDataReader dr; private ssortingng sqlStr = ""; private DataSet myDataSet; private OleDbDataAdapter myAdapter; void test2() { conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\PC1\Documents\\Visual FoxPro Projects\\;Extended Properties=DBASE IV;"); conn.Open(); sqlStr = "Select * from Clients.dbf"; //Make a DataSet object myDataSet = new DataSet(); //Using the OleDbDataAdapter execute the query myAdapter = new OleDbDataAdapter(sqlStr, conn); //Build the Update and Delete SQL Statements OleDbCommandBuilder myBuilder = new OleDbCommandBuilder(myAdapter); //Fill the DataSet with the Table 'bookstock' myAdapter.Fill(myDataSet, "somename"); // Get a FileStream object FileStream myFs = new FileStream ("myXmlData.xml", FileMode.OpenOrCreate, FileAccess.Write); // Use the WriteXml method of DataSet object to write XML file from the DataSet // myDs.WriteXml(myFs); myFs.Close(); conn.Close(); } 

Ce code a fonctionné pour moi!

 public DataTable GetYourData() { DataTable YourResultSet = new DataTable(); OleDbConnection yourConnectionHandler = new OleDbConnection( @"Provider=VFPOLEDB.1;Data Source=C:\Users\PC1\Documents\Visual FoxPro Projects\"); // if including the full dbc (database container) reference, just tack that on // OleDbConnection yourConnectionHandler = new OleDbConnection( // "Provider=VFPOLEDB.1;Data Source=C:\\SomePath\\NameOfYour.dbc;" ); // Open the connection, and if open successfully, you can try to query it yourConnectionHandler.Open(); if (yourConnectionHandler.State == ConnectionState.Open) { ssortingng mySQL = "select * from CLIENTS"; // dbf table name OleDbCommand MyQuery = new OleDbCommand(mySQL, yourConnectionHandler); OleDbDataAdapter DA = new OleDbDataAdapter(MyQuery); DA.Fill(YourResultSet); yourConnectionHandler.Close(); } return YourResultSet; } 

Les DBF Visual FoxPro ne sont PAS des DBF dBase IV et sont donc illisibles pour la plupart des versions du moteur de firebase database Jet de Microsoft Access. (MSDN a des détails , si vous y tenez.)

Vous devez exporter le fichier DBF à partir de FoxPro au format dBase réel ou le faire ouvrir par C # à l’aide du fournisseur Visual FoxPro OLEDB.

Une fois que vous avez installé le fournisseur, vous devez remplacer l’argument “Fournisseur” de votre chaîne de connexion par le suivant, en supposant que votre fichier DBF se trouve dans ce dossier.

 Provider=VFPOLEDB.1;Data Source=C:\Users\PC1\Documents\Visual FoxPro Projects\; 

(Utilisez un format de chaîne @ “”; vous avez oublié une barre oblique dans l’exemple de code, entre PC1 et Documents.)