我正在寻找一个代码片段/库来使用来自 Linux 服务器的 php/Java 通过网络从第三方 foxpro DB 读取数据。 有没有可用的图书馆? 有些人似乎在为 php 使用 Dbase 库?这行得通吗?
除了默认值(数据库名、用户名、密码)之外,我还需要 Foxpro DB 中的哪些参数。 DBF 名称,连接字符串??
最佳答案
不久前,我正在研究相同的解决方案,但遇到了许多死胡同。我想要一个与 php 一起使用的解决方案。
我试过的其中一些是
1. Xbase 驱动程序:它们适用于简单的 DBF,但它们不支持较新的数据类型,如 DateTime 字段,因此排除了该选项。
2. VFP ODBC 驱动程序 :如果您正在使用旧 VFP 版本,这很有效,因为该版本的开发已停止并且不支持较新的自动增量字段
而且你不断收到奇怪的错误,比如“不是一张 table ”,这让你完全发疯。
“VFP ODBC 驱动程序不支持具有自动增量字段的表”
3. 商业工具:还有很多其他商业选项显然不适合我
4. 免费工具(DBF 到 CSV) 将 DBF 转换为 csv 或类似文件,但如果您只进行选择,这将起作用。您无法进行任何更新。
最后对我有用的选项是: 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();
关于php - 使用 php/Java 读取 foxpro DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2238659/