我在这个问题上走到尽头。尝试使用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
添加到连接字符串,Machine
和General
均无效。
请告诉我有一些明显的东西我不见了!
更新:显然有一些我对FoxPro不了解的东西。如果我将命令类型更改为CommandType.TableDirect
并将命令文本切换为order
,则返回所有行。任何见解都将不胜感激。
答案 0 :(得分:1)
我认为问题不在于Foxpro,用相同的代码进行测试,我可以得到结果(在c:\ FoxDb中创建了一个免费的测试表)。确保您使用的是最新的VFPOLEDB驱动程序。看起来问题出在你的桌子里。
顺便说一句,顺序是一个关键字,你最好把它写成:"select * from [order]"
虽然它会像你一样工作(VFP在这方面是宽容的)。问题也可能在于您使用的整理顺序(我从不使用除机器之外的整理顺序,它们在土耳其语中存在问题,我希望在其他语言中也是如此)。