Как мне прочитать базу данных Foxpro 8.0 с С#?

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


person cabgef    schedule 29.10.2010    source источник


Ответы (3)


Этого можно добиться с помощью метода GetSchema в OleDb. Класс соединения.

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()
        );
    }
}
person jveazey    schedule 04.11.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
        }
person NET Experts    schedule 29.10.2010
comment
Я не против, но это не будет работать с версиями после VFP6. - person Cetin Basoz; 19.09.2015
comment
Visual FoxPro dbf — это не то же самое, что dBASE - person Roel; 02.11.2015
comment
дело в том, что это отвечает на вопрос, а не на проблему версии - person NET Experts; 05.11.2015
comment
это верно для файлов .dbf. в соответствии со строками подключения, найденными здесь: connectionstrings.com/dbf-foxpro - person JJ_Coder4Hire; 05.08.2016

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

person DRapp    schedule 29.10.2010