如何从C#读取Foxpro 8.0数据库?

5

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

3个回答

8
你可以通过在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()
        );
    }
}

1
您可以使用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
        }

我不是那个进行贬低的人,但这段代码在VFP6之后的版本中将无法正常工作。 - Cetin Basoz
Visual FoxPro的dbf格式与dBASE不同。 - Roel
问题是回答了问题,而不是版本问题。 - NET Experts
这适用于 .dbf 文件。根据此处找到的连接字符串:https://www.connectionstrings.com/dbf-foxpro/ - JJ_Coder4Hire

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接