使用php / Java阅读foxpro DB

时间:2010-02-10 16:53:53

标签: php foxpro

我正在寻找一个代码片段/库,通过网络使用来自Linux服务器的php / Java从第三方foxpro数据库中读取数据。 有没有图书馆? 有些人似乎正在使用Dbase库进行php?这有用吗?

除了默认值(数据库名,用户名,密码)之外,Foxpro DB需要哪些参数。 DBF名称,连接字符串??

5 个答案:

答案 0 :(得分:5)

前段时间,我正在研究相同的解决方案并且遇到了许多死胡同。我想要一个与php一起工作的解决方案 其中一些我试过的是 1. Xbase驱动程序:它们适用于简单的DBF,但是它们不支持更新的数据类型,如DateTime字段,因此该选项被排除在外。
2. VFP ODBC驱动程序:如果您正在使用较旧的VFP版本,这很有效,因为此版本的开发已经停止,并且它不支持较新的自动增量字段 并且你不断得到像“不是一张桌子”这样让你完全疯狂的奇怪错误。 “VFP ODBC驱动程序不支持具有自动增量字段的表” 3. 商业工具:还有很多其他商业选择显然不适合我 4. 免费工具(DBF到CSV),它将DBF转换为csv或类似的,但如果你只做select,那么这将有效。你不能做任何更新。

最后一个对我有用的选择是: Visual Foxpro OLE驱动程序。

您可以从here安装OLE驱动程序。 示例代码类似于

$conn = new COM("ADODB.Connection");
$conn->Open('Provider=VFPOLEDB.1;Data Source="C:\\testDB.dbc";'); 

$query = "SELECT * FROM TABLE1 ";
$rs = $conn->Execute($query) or die("Error in query: $query. " . $conn->ErrorMsg());
while (!$rs->EOF) {
    echo " Got COL1: " . $rs->Fields("COL1") . " :: COL2: " . $rs->Fields("COL2") . " id: " . $rs->Fields("ID") . "\n";
    $rs->MoveNext();
}

$query = "UPDATE TABLE1 set COL1 = \"AA\", COL2 = \"Updated value\" ";
$conn->Execute($query);

我没有找到任何关于php的文档,但你可以参考MSDN ADO API 并且使用类似的API,尤其是如果您想要执行基于事务的操作。

$conn->BeginTrans();
..
..
$conn->CommitTrans();
or 
$conn->RollbackTrans();

答案 1 :(得分:3)

XBaseJ可能就是你要找的东西。它是开源的,而且非常好 - 我在几个应用程序中使用它,客户仍然使用15年前的FoxPro应用程序。

答案 2 :(得分:1)

您可能想告诉我们创建数据的FoxPro版本。 FoxPro for DOS表与Visual FoxPro表不同,如果它们包含在数据库容器(DBC)中。

可以使用DBase工具访问DOS表,因为它们具有一定的兼容性。

以下是访问Visual FoxPro数据示例的链接。它也适用于FoxPro for DOS数据。

http://social.msdn.microsoft.com/Forums/en/visualfoxprogeneral/thread/821a3cb7-2f25-4cc9-b3a6-ec4551013d2a

Rick Schummer

答案 3 :(得分:1)

我发现最好的方法是将MSSQL服务器设置为Foxpro数据库中的链接服务器。 MSSQL与foxpro在同一台机器上。查询转到MSSQL服务器。我使用免费的。 我可能遇到了同样的问题......通过网络获取当前的Foxpro数据。

答案 4 :(得分:0)

查看类似问题的答案: https://stackoverflow.com/a/21945208/1456887

基本上:

  • FoxPRO OLE DB驱动程序
  • JACOB版本1.17或更高版本
  • 修复连接字符串。