Как мне прочитать базу данных Foxpro 8.0 из c #? - PullRequest
5 голосов
/ 29 октября 2010

Мне нужно импортировать таблицы из foxpro 8.0 на сервер sql.Как мне прочитать таблицы и схему из каталога / файлов foxpro в C #, чтобы я мог создавать таблицы в SQL Server и копировать данные поверх?

Ответы [ 3 ]

7 голосов
/ 05 ноября 2010

Это можно сделать с помощью метода GetSchema в классе 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()
        );
    }
}
1 голос
/ 29 октября 2010

За исключением "драйвера", предоставленного ответом RJ, перейдите в MS и найдите поставщика VFP OleDB ... У вас могут быть проблемы с совместимостью при работе с контейнером базы данных.

1 голос
/ 29 октября 2010

Вы можете использовать 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
        }
...