Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Интеграция PHP-MySQL-VC++


Автор: Zolex 4.9.2007, 13:27
Здравствуйте.
У меня есть система, управляющая базой MySQL, написанная на PHP, под web. Система позволяет пользователю делать выборки по полям, добавлять и удалять записи. База содержит около 20 тысяч записей.

Необходимо написать приложение на VC++ которое будет выполнять следующие задачи:

1. Скачать полностью базу MySQL с удаленного сервера, импортировать ее в понятный для C++ формат. Осуществить заполнение ListBox по одному из полей базы, причем таким образом, чтобы при листании контрола в RichEdit полях появлялись соответсвующие поля базы.
2. Уметь делать записи в online базу MySQL, синхронизирую ее с базой на локальном компьютере.
3. Уметь удалять данные из online базы MySQL, синхронизирую ее с базой на локальном компьютере.
4. Уметь проводить апдэйт локальной базы в зависимости от изменений удаленной базы.
5. Уметь осуществлять выборки по локальной базе.

Вообщем обычная рутинная работа с БД.

Вопрос такой.
С PHP и MySQL у меня все нормально. Вообщем и с С++ знаком. Даже что-то умею делать, в основном на MFC. Так вот, не посоветуете ли как осуществить интеграцию между С++ и online MySQL? То есть какими средствами осуществлять импорт-экспорт базы? В каком формате хранить ее на локальном компе? Как осуществлять поиск-выборку на локальном компе? Нужно ли для этого иметь на локальном компе какую либо СУБД?

Большое спасибо.

Автор: _hunter 4.9.2007, 15:02
дык ты определись что тебе нужно -- интеграция или базу туда/сюда гонять...
если второе -- передавай как обычный файл. на локальном компе естественно должна быть СУБД.
если первое -- банально пишеш в xml запросы о отсылаеш их серверу (PHP-шному) POST/GET-ом.
в ответ получаеш xml с таблицей.

Автор: Zolex 4.9.2007, 16:49
Пожалуй мне надо следующее:

1. Мне надо получить сперва базу с сервера. То есть я так понял я получаю ее как файл а на локальном компе у меня должен стоять MySQL для осуществления запросов по базе из под приложения, написанного на си. Да?

2. Далее мне нужно при изменении базы на локальном компе, менять базу онлайн. Я так понял я это делаю запросами через XML, да?

Автор: _hunter 4.9.2007, 16:59
1 -- да. но непонятен смысл этого шаманства.

2 -- да.

Автор: Zolex 4.9.2007, 17:18
Смысл шаманства в том, что мне может понадобится версия базы без доступа к инету. Допустим раз в сутки некий админ делает изменения в онлайн базе со своего локального компа из под админского приложения. Пользователи же базы, Скачивают так же раз в день обновленную базу себе на компы и пользуются ей до следующего дня, когда они скачают обновленную ночью админом версию.

Как то типа того.

Ну вообщем смысл я понял. Спасибо. Буду пробовать. 
Не совсем мне понятно, только как работать с файлом базы. У меня приложение будет оформлено как dialog based. Визард почему-то не дает делать dialog based с поддержкой ODBC. Как быть то?

Автор: evGenie 5.9.2007, 11:29
Цитата(Zolex @  4.9.2007,  20:18 Найти цитируемый пост)
Не совсем мне понятно, только как работать с файлом базы. У меня приложение будет оформлено как dialog based. Визард почему-то не дает делать dialog based с поддержкой ODBC. Как быть то? 

Создай обычный dialog based и всё.

Автор: akizelokro 5.9.2007, 14:01
Залезь на сайт MySQL и почитай доку.
Я пока что не совсем понял, что ты хочешь сделать, и почему твои виндовые юсеры не могут подрубаться к базе MySQL напрямую.
Есть либа и инклюды для VC++(5), также есть поддержка ODBC, JDBC и .NET (как прописано в доке). На худой конец, есть PHP для винды.
Ты (или администратор) можешь делать backup базы и скидывать файл, где просто его разворачиваешь. Есть вариант репликации (но не знаю, как будут дружить MySQL под Linux с MySQL под Windows). Здесь у тебя проблема в сборке разных изменений от разных твои виндовых юсеров.  Или у вас сеть, в которую ты хочешь воткнуть MySQL под Windows?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)