FoxPro -> MySQL - PullRequest
       14

FoxPro -> MySQL

2 голосов
/ 15 декабря 2010

Я создаю веб-сайт для клиента, который использует настольную систему баз данных FoxPro.

Данные, которые должны быть разделены между базой данных и веб-сайтом, по сути, представляют собой список участников (довольно плоская структура: их контактные данные, несколько полей флага и т. Д.)

Они хотели бы, чтобы любые изменения, внесенные в эти данные участника, автоматически синхронизировались с веб-сайтом (база данных mysql). Это не должно быть полностью мгновенно, но процесс должен быть легким.

Мой вопрос: какие простейшие подходы можно использовать здесь? они готовы пойти на компромисс, чтобы сэкономить время и затраты на разработку.

Есть ли у FoxPro простой способ напрямую общаться с моей онлайн-базой данных MySQL?

Может ли FoxPro создать файл типа XML или CSV и передать его в веб-скрипт? (который я затем анализирую и обновляю MySQL)

Любые предложения приветствуются.

Ответы [ 6 ]

2 голосов
/ 15 декабря 2010

Вы можете использовать ODBC или OLE DB из Visual FoxPro. Использование ODBC, как правило, довольно просто.

0 голосов
/ 13 мая 2017

Получите драйвер odbc отсюда: https://dev.mysql.com/downloads/connector/odbc/

Вам также может понадобиться распространяемый пакет Microsoft Visual C ++ 2010 (x86) vcredist_x86.exe

Используйте этот код для установки соединения mysql

PUBLIC server,port,db,uid,pw
server="" & use mysql ip
port="" & port mysql is open on
db="" & db name
uid="" & user anme
pw="" & password

mysql = SQLSTRINGCONNECT('Driver={MySQL ODBC 5.3 Unicode Driver};Server=' + server + ';Port=' + port + ';Database=' + db + ';uid=' + uid + ';Pwd=' + pw + ';',.T.)
IF VARTYPE(mysql) == 'L' OR m.mysql < 0
    MESSAGEBOX('MySQL Connection Failed. Logging will be disabled for this session.',16,'MySQL Error',3500)
ENDIF

Вот пример для вставки в таблицу mysql. Я использую его для регистрации действий пользователя в MySQL.

IF VARTYPE(mysql) != 'L' AND m.mysql >= 0
    SQLPREPARE (;
        m.mysql;
        ,'INSERT INTO logging (computer,operator,application,program,version,action) VALUES (;
            ?COMPUTERNAME ;
            ,?OPERATOR ;
            ,?thisApplication ;
            ,?thisProgram ;
            ,?thisVersion ;
            ,?logMessage;
            );';
        )
    SQLEXEC(m.mysql)
ENDIF
0 голосов
/ 17 июня 2016

Попробуйте:

  1. Создайте общую папку на вашем веб-сервере.
  2. Создайте CSV-файл из ваших данных и сохраните его в общей папке.
  3. Создатьa Cron Jobs / Scheduler для анализа и выгрузки данных на ваш Mysql.

Это работает для меня.

0 голосов
/ 17 июня 2016

вы можете использовать XML для отправки информации в веб-приложение по HTTP REQUEST. Для создания / чтения XML в foxpro вы можете использовать CURSORTOXML / XMLTOCURSOR.

В своем веб-приложении вы можете создать веб-сервис для приема / отправки данных XML.

если вам нужен другой тип данных, вы можете использовать данные JSON. Используйте QDFOXJSON https://qdfoxjson.codeplex.com/

0 голосов
/ 14 августа 2011

Foxpro имеет встроенную функцию CURSORTOXML, которая берет таблицу и конвертирует ее в XML Он довольно хорошо документирован в файлах справки, но вот простой пример его использования

LOCAl lcXML,lnRecords

use my_table

lnRecords=CURSORTOXML('my_table','lcXML',0)

? lnRecords
? lcXML

Надеюсь, это поможет

0 голосов
/ 15 декабря 2010

Я бы сказал, что ваша самая быстрая / самая легкая ставка, вероятно, заключается в следующем с помощью ночного сценария:

  1. экспорт данных FoxPro в XML
  2. вставить данные в базу данных MySQL, используя что-то вроде Python или Java

В долгосрочной перспективе вам, вероятно, лучше полностью отказаться от FoxPro после первоначального импорта;)

...