Я ищу фрагмент кода / библиотеку для чтения данных из стороннего foxpro DB через сеть, используя php / Java с сервера Linux. Есть ли доступная библиотека? Некоторые люди, кажется, используют библиотеку Dbase для php? Это работает?
Какие параметры мне нужны из Foxpro DB, кроме значения по умолчанию (имя_базы данных, имя пользователя, пароль). Имя DBF, строка подключения?
Некоторое время назад я изучал одно и то же решение и ударил многие тупики. Я хотел решение, которое работало с php.
Некоторые из них, которые я пробовал, были
1. Драйверы Xbase : они хорошо работали для простых DBF, но затем они не поддерживают новые типы данных, такие как поля DateTime, поэтому опция была исключена.
2. Драйвер VFP ODBC : это хорошо работает, если вы работаете с более старой версией VFP, так как разработка на этом остановилась и не поддерживает новые поля автоинкремента, и вы продолжаете получать странные ошибки, такие как «Не таблица», которая заставляет вас закончить псих. «Драйвер VFP ODBC не поддерживает таблицы с полями автоинкремента»
3. Коммерческие инструменты : Есть много других коммерческих вариантов, которые, очевидно, не будут работать для меня
4. Бесплатные инструменты (DBF to CSV), которые преобразуют DBF в csv или аналогичные, но тогда это будет работать, если вы делаете только выбор. Вы не можете делать какие-либо обновления.
Последний вариант, который, наконец, работал для меня: Visual FoxPro OLE Driver.
Здесь вы можете установить драйвер OLE. Пример кода выглядит так:
$ conn = новый COM («ADODB.Connection»); $ conn-> Open ('Provider = VFPOLEDB.1; Источник данных = "C: \\ testDB.dbc";'); $ query = "SELECT * FROM TABLE1"; $ rs = $ conn-> Execute ($ query) или die ("Ошибка в запросе: $ query.". $ conn-> ErrorMsg ()); в то время как (! $ rs-> EOF) { echo "Получил COL1:". $ rs-> Поля ("COL1"). ":: COL2:". $ rs-> Поля ("COL2"). " Я бы: " . $ rs-> Поля ("ID"). "\ П"; $ Rs-> MoveNext (); } $ query = "UPDATE TABLE1 set COL1 = \" AA \ ", COL2 = \" Обновленное значение \ ""; $ Conn-> Execute ($ запроса);
Я не нашел документацию для php, но вы можете обратиться к API-интерфейсу MSDN ADO и использовать аналогичный API, особенно если вы хотите выполнять операции на основе транзакций.
$ Conn-> BeginTrans (); .. .. $ Conn-> CommitTrans (); или $ Conn-> RollbackTrans ();
XBaseJ может быть тем, что вы ищете. Это с открытым исходным кодом, и это неплохо – я использую его в нескольких приложениях, где клиенты все еще висят на своих 15-летних приложениях FoxPro.
Вы можете сказать нам, какая версия FoxPro создается. Таблицы FoxPro для DOS отличаются от таблиц Visual FoxPro, если они содержатся в контейнере базы данных (DBC).
Таблицы DOS могут быть доступны с помощью инструментов DBase, поскольку они имеют некоторую совместимость.
Вот ссылка на пример доступа к данным Visual FoxPro. Он также должен работать с FoxPro для данных DOS.
Рик Шумер
Лучший способ, который я нашел, – установить сервер MSSQL в качестве связанного сервера в базу данных Foxpro. MSSQL находится на той же машине, что и foxpro. Запросы идут на сервер MSSQL. Я использую бесплатный. У меня, вероятно, была та же проблема, с которой вы сталкиваетесь … получение текущих данных Foxpro по сети.
См. Ответ на аналогичный вопрос: https://stackoverflow.com/a/21945208/1456887
В основном: