How do I read a Foxpro 8.0 database from c#?
Asked Answered
M

3

5

I need to import tables from foxpro 8.0 to sql server. How do I read the tables & schema from a foxpro directory/files in C# so I can create the tables in SQL Server and copy the data over?

Motorbike answered 29/10, 2010 at 7:32 Comment(0)
S
8

You can accomplish this through the use of the GetSchema method on the OleDb.Connection class.

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()
        );
    }
}
Spradling answered 4/11, 2010 at 21:34 Comment(0)
K
1

You can use ODBCConnection. I know foxpro is using .dbf files.

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
        }
Kurbash answered 29/10, 2010 at 7:58 Comment(4)
I am not the downvoter, but right this wouldn't work with versions after VFP6.Herve
Visual FoxPro dbf is not the same as dBASEDeficient
the thing is this answers the question and not the version problemKurbash
this is correct for .dbf files. as per connection strings found here: connectionstrings.com/dbf-foxproBanter
G
1

With exception of the "Driver" providd by RJ's answer, go to MS and get the VFP OleDB provider... You might have compatibility issues if dealing with a database container.

Gardner answered 29/10, 2010 at 12:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.