DBF文件并行读取

时间:2017-03-30 02:40:13

标签: c++ visual-foxpro foxpro dbf

foxpro软件读取,写入和更新DBF文件中的记录。我在c ++应用程序中并行读取相同的DBF。如果我让我的c ++应用程序长时间阅读DBF文件会有任何问题吗?

3 个答案:

答案 0 :(得分:2)

与上面的答案相反,DBF格式当然多用户,几乎每个使用它们的真实应用程序都是多用户,我们有数百个用户使用的应用程序。

可能存在一个问题,即您的C ++应用程序不遵循FoxPro将使用的锁定机制,但这不是一回事。如果您在C ++端正确使用Microsoft Visual FoxPro OLEDB驱动程序,那么您将不会遇到任何问题,但是可以像这样打开并尽快关闭DBF。

答案 1 :(得分:0)

VFP表是基于文件的,并在更新时使用共享锁。如果您正在直接阅读(低级别),只有阅读就不会有问题。因为它无论如何都是数据,并且最优化的读取器是OLEDB \ ODBC驱动程序(最多版本6存在ODBC驱动程序。对于更高版本,Sybase Advantage Server有一个驱动程序 - 本地免费,远程付费AFAIK但我不使用)。

我一直在使用VFP的DBF表(是的,来自VFP)和C#通过VFPOLEDB很长一段时间,我可以说我没有问题。实际上,驱动程序在VFP中从C#vs更好地工作,我不知道为什么。

另请注意,当您使用VFPOLEDB驱动程序时,默认情况下使用ANSI模式(除非您更改模式,否则将共享读取\写入)。

答案 2 :(得分:-1)

dbf格式不是多用户。如果您的c ++应用程序只是读取而不是更新,那么您将不会在磁盘上出现数据损坏...但是,如果您碰巧在Foxpro应用程序中读取记录,您可能会在c ++应用程序中出现“数据损坏”正在更新它。您可以通过始终关闭并打开dbf文件(在您的c ++应用程序中)来最小化此风险,但您无法完全消除它。

如果您可以让Foxpro应用程序定期复制并让c ++应用程序使用该副本,那么您可以,但数据可能会略微过时。