FoxPro到C#:ODBC,OLE DB或其他方法之间的最佳方法是什么?

时间:2012-09-25 15:16:24

标签: c# .net foxpro visual-foxpro

我们需要使用C#从FoxPro 8读取数据。我要做一些操作,并将一些数据推送到SQL Server数据库。我们不确定读取这些数据的最佳方法是什么。

我看过OLE DB和ODBC;什么是最好的?

规定我们:

  1. 导出程序将每晚运行,但我的公司运行24小时 一天。
  2. DBF有时可能很大。
  3. 我们不需要修改数据。
  4. 我们的系统,使用FoxPro,非常不稳定:我需要 找到一种绝对不会破坏数据的方法,理想情况下,不会 读取时锁定DBF文件。
  5. 速度是次要要求:它 必须很快,但要求#4是最重要的。

4 个答案:

答案 0 :(得分:5)

我会使用OLEDB连接器 - 它最近更新,速度更快,处理内存更好。

如果您只是通过OLEDB驱动程序从DBF读取数据,我不会担心在记录或文件级别锁定或损坏数据。您需要做的就是处理C#代码中的异常,例如,当FoxPro应用程序中的某些进程将DBF独占打开而您无法读取它时。

您还需要注意优化任何查询以使用DBF文件上的可用索引,特别是因为您提到它很大。

我认为这一切都在同一个局域网上?如果必须通过互联网工作,那么您需要调查通过Web服务公开FoxPro数据。

最后,还有其他选项可用于访问DBF文件。

Sybase还提供可以访问DBF文件的ODBCOLEDB个驱动程序 - 但是它们不能使用FoxPro触发器,存储过程等。不过,在你的情况下,这几乎无关紧要。

答案 1 :(得分:2)

根据this MSDN article,它建议使用Visual FoxPro OLE DB提供程序。查看本文,它提供了有关如何使用OLE DB提供程序以及如何从DBF数据源查询数据的示例。

答案 2 :(得分:0)

在VFP中编写一些将数据转储为CSV或XML的代码也很容易 - 考虑将此代码添加到FoxPro应用程序中。处理这些文件比尝试连接到片状FoxPro数据库要容易得多。

答案 3 :(得分:0)

Codeplex上有一个LinqToVfp工具。请参阅:http://linqtovfp.codeplex.com

它有一些很好的样本可以帮助你入门。