4

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

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

要求:

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

4 回答 4

5

我会使用 OLEDB 连接器——它最近更新了很多,速度更快并且处理内存更好。

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

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

我假设这都在同一个局域网上?如果它必须在 Internet 上运行,那么您需要调查通过 Web 服务公开 FoxPro 数据。

最后,还有其他访问 DBF 文件的选项。

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

于 2012-09-25T15:32:35.060 回答
2

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

于 2012-09-25T15:36:05.720 回答
0

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

于 2012-09-26T23:48:03.570 回答
0

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

它有一些很好的示例可以帮助您入门。

于 2012-10-09T03:09:21.393 回答