5

我需要将表从 foxpro 8.0 导入到 sql server。如何从 C# 中的 foxpro 目录/文件中读取表和架构,以便我可以在 SQL Server 中创建表并复制数据?

4

3 回答 3

7

您可以通过在 OleDb.Connection 类上 使用GetSchema方法来完成此操作。

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()
        );
    }
}
于 2010-11-04T21:34:22.760 回答
1

您可以使用 ODBC 连接。我知道 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
        }
于 2010-10-29T07:58:15.873 回答
1

除了 RJ 的答案提供的“驱动程序”之外,去 MS 并获取 VFP OleDB 提供程序......如果处理数据库容器,您可能会遇到兼容性问题。

于 2010-10-29T12:28:37.940 回答