ОТВЕТ::::::::::Для работы с базами данных в QT используется одни и теже классы для всех баз данных.
Уловка в том, что для того чтобы QT узнала с какой же библиотекой она работает, необходимо загрузить так называемый "
драйвер базы даных".
Для этих целей служит эта строка:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");Где "QMYSQL" - это имя собственное драйвера базы данных "MySQL".
-----------------
Дело в том что данный драйвер не поставляется почти во всех версиях и сборках библиотеки QT.
Для того, чтобы все-таки использовать его в своих программах, необходимо его собрать самому используя при этом пару фалов заготовленных QT-шниками как раз для сборки этого драйвера.
-----------------
Для этого необходимо: [
пример для WinXp. Для остального делается аналогично!]
1) Библиотека QT [со всеми потрохами, mingw например]
2) MinGW утилиты [их нет в стандартной поставке mingw входящего в QT]
3) Терпение
Вот копия статьи из "
ru.wikibooks.org" с поими комментариями:
======================
Последние версии MySQL официально не поддерживают сборку под MinGW и соответственно нужной вам библиотеки, в соответствующем формате в поставке нет. Придется сделать ее самому. Примерно так:
1) Переходим в каталог с библиотеками MySQL:
# cd <путь_к_установленному_mysql>\lib\opt
2) Создадим файл DEF:
# reimp -d libmysql.lib
*Прим: reimp идет вместе с утилитами MinGW и msys.
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
4ybaka word::::::::
Я скачал утилиты с "opensource.org" и просто вытянул оттуда "reimp.exe"
и поместил его в папку с "mingw32-make.exe".
Также необходимо ЛИБО полностью прописывать адрес ехе-шника "reimp.exe"
при его запуске, если папка фала mingw32-make.exe (т.е. например "J:\Qt\2009.01\mingw\bin\")
(но при этом херово работат, если например запускается цепочка
файлов, которые запускают друг друга по имени, а не полному адресу,
так как думают, что адреса к ним прописаны в переменной среды. В таком случае
нифига не работает!], ЛИБО прописать папку ехе-шников mingw в переменную среды]]]]]]]]]]]]]]]]]]]]]]]]]]]]
3) Создаем библиотеку импорта MinGW:
# dlltool -k --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a
В этот момент создается MinGW-совместимая библиотека libmysql.a
4) Переходим в каталог с исходными файлами плагина Qt MySQL:
# cd <каталог_инсталляции_qt>\src\plugins\sqldrivers\mysql
5) Запускаем qmake для генерирования Makefile
# qmake -o Makefile "INCLUDEPATH+=<каталог_инсталляции_mysql>\include" "LIBS+=-L<каталог_инсталляции_mysql>\lib\opt -lmysql" mysql.pro
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
4ybaka word::::::::
Я тут помоему писал точное название библиотеки, которую получил в 3)-м пункте, и без параметра "-L"
("C:\Mysql" -- Это каталог инсталяции Mysql. Я просто запихнул туда mysql установившийся в папку по умолчанию)
# qmake -o Makefile "INCLUDEPATH+=C:\Mysql\include" "LIBS+=C:\Mysql\lib\opt\libmysql.a" mysql.pro
]]]]]]]]]]]]]]]]]]]]]]]]]]]]
6) Собираем плагин
# make
7) Убеждаемся, что libmysql.dll доступен через path. В случае отсутствия libmysql.dll приложение не сможет загрузить плагин и выдаст сообщение что нужного плагина нет. При этом в кэш плагинов - в моём случае - [HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults\Qt Plugin Cache 4.2.false] будет записана неверная информация.
Если произошла такая неприятность, чистим кэш плагинов - это можно сделать удалив из реестра ветку
[HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults]
PS: Это было опробовано для MySQL 4.1 (4.1.12a) и OpenSource Win32 Qt4.
[[[[[[[[[[[[[[
4ybaka word:::::::::::
Скомпилинное приложение, использующее QMYSQL драйвер для работы с базой данных MySQL,
будет требовать для запуска библиотеку "libmysql.dll", которая устанавливается в папку "<каталог установки mysql>\lib\opt\",
при установке mysql (под винду).
Для того чтобы "дать" приложению эту библиотеку, необходимо чтоб адрес к ней был прописан в переменной среды ("path" для винды).
Также можно положить ее в папку с запускаемым файлом приложения.]]]]]]]]]]]]]]
===================================
Ссылка на эту статью:
http://ru.wikibooks.org/wiki/Qt4_ЧАВОА здесь оригинал на английском:
http://www.qtforum.org/thread.php?postid=52360#post52360