VFPOleDb架构已返回,但C#中没有结果

时间:2016-07-11 15:01:29

标签: c# oledb visual-foxpro

我在这个问题上走到尽头。尝试使用Microsoft OLE DB Provider for Visual FoxPro 9.0使用以下代码连接到本地托管的FoxPro目录:

using (var con = new OleDbConnection(@"Data Source=C:\FoxDB;Provider=VFPOLEDB.1;"))
{
    con.Open();
    using (var cmd = new OleDbCommand("select * from order", con))
    {               
        var dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            Debug.WriteLine(dr["ord_id"]);
        }
    }
}

执行代码不会引发异常,但返回的行数为零。发现并返回模式,因为当我检查数据读取器时它有72个字段(我对数据表,数据集,数据适配器等做了同样的事情。所有都返回模式,但结果为零)。

构建一个SSIS包以访问同一个表并拉入MSSQL数据库会导致3,828条记录被拉入。磁盘上的order.dbf为884kb,这似乎与我提供的SSIS结果相吻合。< / p>

我已尝试将Collation Sequence添加到连接字符串,MachineGeneral均无效。

请告诉我有一些明显的东西我不见了!

更新:显然有一些我对FoxPro不了解​​的东西。如果我将命令类型更改为CommandType.TableDirect并将命令文本切换为order,则返回所有行。任何见解都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为问题不在于Foxpro,用相同的代码进行测试,我可以得到结果(在c:\ FoxDb中创建了一个免费的测试表)。确保您使用的是最新的VFPOLEDB驱动程序。看起来问题出在你的桌子里。

顺便说一句,顺序是一个关键字,你最好把它写成:

"select * from [order]"

虽然它会像你一样工作(VFP在这方面是宽容的)。问题也可能在于您使用的整理顺序(我从不使用除机器之外的整理顺序,它们在土耳其语中存在问题,我希望在其他语言中也是如此)。