вторник, 2 ноября 2010 г.

Qt + MySQL

Начали проходить БД, и дело, конечно, не обошлось без MySQL:) Так как я любитель Qt, То GUI конечно хотелось бы написать на нём и соответственно взаимодействие с БД осуществить с помощью этой библиотеки.
Все, я думаю, читали, что для использования возможностей API MySQL надо просто подключить нужный драйвер, в нашем случае это QMYSQL. Делается это очень просто.
QSqlDatabase  & db = QSqlDatabase::addDatabase("QMYSQL","base");

Но при запуске может возникнуть проблема - библиотека говорит нам, что драйвер QMYSQL не найден. А ведь действительно, откуда qt знает, где наш sql  Как говорится – «телепаты в отпуске» :)
Что же нам делать в этом случае? Ответ вполне прост, надо нам собрать qt с нужными для нас модулями, в частности для mysql. Делать мы это будем в любимой всеми командной строке.
Так как я не любитель стандартной консоли в windows, то пользуюсь программой “Console”. Название вполне оригинальное:)
Итак, что там нужно: во-первых, собираться будем для visual studio 2008, поэтому будем пользоваться её утилитой Visual Studio 2008 Command Prompt.
Или можно ввести в консоли следующее:
%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86



p.s путь к батнику у вас может быть иным .
Итак, теперь осталось верно собрать кутишечку:)
Для этого переходим в консоли в папку с Qt и набираем:
configure –debug-and-release –platform win32-msvc2008 –qt-sql-mysql



Дальше пойдёт сборка



После окончания сборки, мы радостные по идее должны зайти в src\sql и выполнить nmake, но не тут-то было:) Нам скажут , что он не понимает где лежат сами либы. Придётся прикручивать всё вручную, ну как обычно:)
Находим либы и инклуды в папке с MySQL. По идее, они должны лежать в MySQL\MySQL Server\lib .
Так вот, смысл в том, что мы вручную указываем в исходниках qt путь до этой папки с файлом mysql.h.
В моём случае получилось так :



Теперь снова заходим в src\sql и делаем nmake



Теперь всё должно пройти нормально:)
Удачи. Если что пишите на почту chexov34@gmail.com по возможности отвечу.
Отдельное спасибо Мамонтову Дмитрию http://vkontakte.ru/id6925882. Он просто мегамозг и задрот :)

Комментариев нет:

Отправить комментарий