代码之家  ›  专栏  ›  技术社区  ›  cabgef

如何从C_读取FoxPro 8.0数据库?

  •  5
  • cabgef  · 技术社区  · 14 年前

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

    3 回复  |  直到 14 年前
        1
  •  7
  •   jveazey    14 年前

    您可以通过使用 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()
            );
        }
    }
    
        2
  •  1
  •   NET Experts    14 年前

    您可以使用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
            }
    
        3
  •  1
  •   DRapp    14 年前

    除了RJ答案提供的“驱动程序”外,转到MS并获取VFP OLEDB提供程序…如果处理数据库容器,则可能存在兼容性问题。