Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Qt и MySQL
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
Страницы: 1, 2, 3
acen83
Попробуем еще раз:

Рассмотрим 2 варианта встраивания mysql модуля в Qt:

1) mysql-модуль в качестве плагина

По инструкции

Вам нужно получить MySQL файлы инсталяции. Запустите SETUP.EXE и выбирите "Custom Install". Установите модуль "Libs & Include Files". Собирается плагин так: (например, MySQL установлен в C:\MySQL):
cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\opt\libmysql.lib" mysql.pro
nmake


скомпилировал плагин, в папке plugins\sqldrivers появился файл qsqlmysql4.dll - вроде все как положено.

Но при запуске простого приложения со строчкой

QSqlDatabase db = QSqlDatabase::addDatabase("MYSQL");

выводится сообщение об отсутствии mysql модуля, и при этом сообщается что доступны sqlite и odbc...
Удалив из папки plugins\sqldrivers файлы sqlite.dll и odbc.dll программа стала ругаться что вообще никаких модулей нет. Но почему она видит эти два модуля и не видит qsqlmysql4.dll?
:unsure:

2) mysql - модуль встроенный в qt во время компиляции qt

В инструкции

Скрипт configure не может обнаружить необходимые библиотеки(*.lib) и include-файлы, если она находятся не в стандартных директориях, тогда вам может понадобиться указать путь к ним используя -I и -L опции командной строки. Например, если MySQL include-файлы установлены в /usr/local/mysql (или в C:\mysql\include под Windows), тогда добавьте следующий configure параметр: -I/usr/local/mysql (или -I C:\mysql\include для Windows).

Под Windows параметр -I не поддерживает пробелы в пути, тогда используйте 8.3 имена; например, используйте C:\progra~1\mysql вместо C:\Program Files\mysql.

Используйте параметр -qt-sql-<driver> для статической сборки БД драйвера с Qt библиотекой или -plugin-sql-<driver> для сборки драйвера как плагина.


сказано что для этого надо указать пути до mysql-исходников. Запускаю configure с параметрами -I *include path* -L *lib path* -l libmysql.lib.
В списке доступных модулей mysql нет :(


Кто нибудь вообще работал с MySql в qt-приложении?
rich
Цитата(acen83 @ 8.7.2008, 19:53) *
Попытался заюзать данные с MySql сервера - qt заругался что в нем нет драйвера MySQL.
Поставил MySql 5 на комп, запускаю configure qt - в списках доступных баз MySql нету :blink:

Как же это все работает? :unsure:

p.s. библиотеку мне еще надо собрать статическую, чтобы никаких дополнителных файлов к экзешнику не требовалось

мож при сборке Qt поддержку Sql драйвера надо было указать
acen83
deleted
Admin
Попробуй руками собрать плагин для MYSQL: Как собрать QMYSQL плагин под Windows

p.s. acen83, одного нажатия на кнопку отправить достаточно. ;)
acen83
deleted
ViGOur
Цитата(acen83 @ 8.7.2008, 22:19) *
эээ... qmak'а то еще нет (библиотека не собрана)... 2 раза чтоли компилировать придется?
Не понял, у тебя не собрана Qt? Если так, то собирай просто с поддержкой MySql.

Цитата(acen83 @ 8.7.2008, 22:19) *
Теперь запускаю configure, но в списках найденных в системе плагинов mySql нет
А зачем ты запускаешь configure?

Для проверки наличия mysql поддержки можно запустить %qtdir%\demos\sqlbrowser
Для решения проблем возникшей при установке поддержки mysql читай: Драйвера баз данных SQL -> Решение проблем
acen83
deleted
acen83
Заново сформулировал проблему (в 1 посте)
ViGOur
Угу, я работаю, поначалу шаманил как и ты, но после прочтения: Драйвера баз данных SQL -> Решение проблем и следования инструкциям у меня заработал плагин.
ЙаМайскЫйПчОЛ
QSqlDatabase db = QSqlDatabase::addDatabase("MYSQL"); ???

1) QT += sql (.pro)
2) #include <QtSql>
3) QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); !!!

или я чего то не понял??? у меня так работало. Debian etch r3+ Qt 4.3.5 (commercial) + (vim || KDevelop || QDevelop) + g++

Цитата(acen83 @ 8.7.2008, 20:53) *
сказано что для этого надо указать пути до mysql-исходников. Запускаю configure с параметрами -I *include path* -L *lib path* -l libmysql.lib.
В списке доступных модулей mysql нет sad.gif

? зачем? какая платформа, какой Qt ?
acen83
Цитата(ЙаМайскЫйПчОЛ @ 11.7.2008, 12:27) *
QSqlDatabase db = QSqlDatabase::addDatabase("MYSQL"); ???

очепятался :D

Цитата(ЙаМайскЫйПчОЛ @ 11.7.2008, 12:27) *
1) QT += sql (.pro)
2) #include <QtSql>
3) QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); !!!

Да. Не пашет. Два плагина видит, mysql не видит. :(


QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC




Цитата(ЙаМайскЫйПчОЛ @ 11.7.2008, 12:27) *
? зачем? какая платформа, какой Qt ?

Затем что в идеале нужно чтобы плагин был встроен в библиотеку qt. Платформа windows, qt 4.4.0

Цитата(ViGOur @ 11.7.2008, 9:51) *
но после прочтения: Драйвера баз данных SQL -> Решение проблем и следования инструкциям у меня заработал плагин.


1) Убедитесь, что вы используете shared Qt библиотеку; вы не может использовать плагины в статической сборке.
Убедился - qt скачанная, уже скомпилированная под mingw

2) Убедитесь, что плагин в правильной директории. Для этого можно использовать QApplication::libraryPaths(), чтобы определить, где Qt ищет плагины.
Убедился - убирая другие плагины (dll-ки) из папки plugins\sqldrivers они исчезают из списка доступных при запуске программы

3) Убедитесь, что клиентские библиотеки DBMS доступны. Под Windows, вы можете использовать Visual Studio dependency walker.
Не понял что за клиентские библиотеки DBMS, так что убедится в их доступности не могу
ViGOur
Цитата(acen83 @ 11.7.2008, 19:57) *
Не понял что за клиентские библиотеки DBMS, так что убедится в их доступности не могу
Да нет, ключевым словом тут является Visual Studio dependency walker. Посмотри все ли библиотеки твой exe'шник подгружает или какие не видит.

Еще вот цитатат от туда:
Цитата
Если у вас возникли проблемы с загрузкой плагинов, и вы видите ошибку вроде этой:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QMYSQLпроблема вероятно в том, что плагин имеет неправильный ключ сборки. Для отладки удалите соответствующую запись в $HOME/.qt/qt_plugins_(qtversion).rc файле.

После чего снова попытайтесь загрузить этот плагин, и вы получите более детальное описание ошибки.
$HOME для винды равен %USERPROFILE% если мне не изменяет память.
evCo
Пользовался вот этой штукой как руководством.
http://www.crossplatform.ru/documentation/...ugin-on-windows

В дебаг режиме у меня почему-то не подключаються модули сети и sql, но для резлиза все работает. По-этому добавил в про файл CONFIG += release. Выполнил qmake, потом make. Написало:

C:\Qt\4.3.3\src\plugins\sqldrivers\mysql>make
mingw32-make -f Makefile.Release all
mingw32-make[1]: Entering directory `C:/Qt/4.3.3/src/plugins/sqldrivers/mysql'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -shared -Wl,--out-implib,c:\Qt\4.3.3\plugins\sqldrivers\
libqsqlmysql4.a -o ..\..\..\..\plugins\sqldrivers\qsqlmysql4.dll tmp/obj/release
_shared/main.o tmp/obj/release_shared/qsql_mysql.o tmp/obj/release_shared/moc_qs
ql_mysql.o  -L"c:\Qt\4.3.3\lib" -L"c:\Qt\4.3.3\lib" tmp\obj\release_shared\qsqlm
ysql_resource_res.o C:\MySQL\lib\opt\libmysql.lib -lQtSql4 -lQtCore4
Creating library file: c:\Qt\4.3.3\plugins\sqldrivers\libqsqlmysql4.a
tmp/obj/release_shared/qsql_mysql.o(.text+0x4c):qsql_mysql.cpp: undefined refere
nce to `mysql_character_set_name@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x184):qsql_mysql.cpp: undefined refer
ence to `mysql_error@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x19a):qsql_mysql.cpp: undefined refer
ence to `mysql_errno@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6d7):qsql_mysql.cpp: undefined refer
ence to `mysql_stmt_error@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6eb):qsql_mysql.cpp: undefined refer
ence to `mysql_stmt_errno@4'
...
tmp/obj/release_shared/qsql_mysql.o(.text+0x7365):qsql_mysql.cpp: undefined refe
rence to `mysql_stmt_bind_param@8'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysql4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.3.3/src/plugins/sqldrivers/mysql'
mingw32-make: *** [release-all] Error 2
ViGOur
По всей видимости у тебя не прописаны пути к mysql include файлам, проверь...
evCo
Цитата(ViGOur @ 13.7.2008, 22:56) *
По всей видимости у тебя не прописаны пути к mysql include файлам, проверь...

Да прописано все... Я даж в про файл закинул пути к include и к библиотеке libmysql.lib. Но проблема таже
evCo
Попробовал пересобрать Qt с драфверавми под мускул.
Собирал по инструкции http://qtfaq.ru/tiki-index.php?page=compil...ingw+qt+windows. Только по отключал драйвера под некоторые БД.
...
bug_shared\qsqlquery.o kernel\qsqlquery.cpp
g++ -c -include tmp\obj\debug_shared\qt_pch.h -g -Wall -frtti -fexceptions -mthr
eads -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BUILD
_SQL_LIB -DQT_MAKEDLL -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_44_API
_QSQLQUERY_FINISH -DQT3_SUPPORT -DQT_MOC_COMPAT -D_USE_MATH_DEFINES -DQT_NO_CAST
_FROM_ASCII -DQT_DLL -DQT_CORE_LIB -I"..\..\include\QtCore" -I"..\..\include\QtC
ore" -I"..\..\include" -I"..\..\include\QtSql" -I"tmp" -I"c:\Qt\4.3.3\include\Ac
tiveQt" -I"tmp\moc\debug_shared" -I"." -I"..\..\mkspecs\win32-g++" -o tmp\obj\de
bug_shared\qsqldatabase.o kernel\qsqldatabase.cpp
In file included from kernel\qsqldatabase.cpp:49:
kernel\/../drivers/mysql/qsql_mysql.h:47:19: mysql.h: No such file or directory
In file included from kernel\qsqldatabase.cpp:49:
kernel\/../drivers/mysql/qsql_mysql.h:98: error: expected `)' before '*' token
In file included from kernel\qsqldatabase.cpp:77:
kernel\/../drivers/ibase/qsql_ibase.h:43:19: ibase.h: No such file or directory
In file included from kernel\qsqldatabase.cpp:77:
kernel\/../drivers/ibase/qsql_ibase.h:79: error: expected `)' before "connection
"
mingw32-make[2]: *** [tmp/obj/debug_shared/qsqldatabase.o] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/4.3.3/src/sql'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.3.3/src/sql'
mingw32-make: *** [sub-sql-make_default] Error 2
ViGOur
У нас есть свое описание сбоки: Сборка Qt с использованием MinGW32
Ну и общее: Установка библиотеки Qt - Общее
;)
Litkevich Yuriy
заметь строку:
-I C:\mysql\include
нужно писать без пробела:
-IC:\mysql\include

Цитата(acen83 @ 8.7.2008, 23:53) *
скомпилировал плагин, в папке plugins\sqldrivers появился файл qsqlmysql4.dll - вроде все как положено.

а файл qsqlmysql4.lib или qsqlmysql4.a появился?
Litkevich Yuriy
----
еще мануальчик на тему мускула:
Building the QMYSQL plugin on Windows using MinGW
evCo
Что я только не делал чтоб поставить мускул. Поставил новый MinGW (5.1.4, до этого стоял 3.4.5). Пробовал собирать три разные версии Qt (4.3.2-4.3.4). 100 раз менял конфиги, но сборка всегда заканчиваеться так:

...
In file included from kernel\qsqldatabase.cpp:56:
kernel\../drivers/mysql/qsql_mysql.h:54:19: mysql.h: No such file or directory
In file included from kernel\qsqldatabase.cpp:56:
kernel\../drivers/mysql/qsql_mysql.h:105: error: expected `)' before '*' token
mingw32-make[2]: *** [tmp/obj/debug_shared/qsqldatabase.o] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/4.3.4/src/sql'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.3.4/src/sql'
mingw32-make: *** [sub-sql-make_default-ordered] Error 2

Цитата(Litkevich Yuriy @ 15.7.2008, 21:17) *
----
еще мануальчик на тему мускула:
Building the QMYSQL plugin on Windows using MinGW

Вот что вышло
...
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot fin
d -lQtSqld4
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysqld4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.3.4/src/plugins/sqldrivers/mysql'
mingw32-make: *** [debug-all] Error 2
Litkevich Yuriy
1) MinGW 5.1.4. это версия установщика, комилятор там 3.4.5. (как у меня)
2)
Цитата
mysql.h: No such file or directory

Не указан путь к нему.

Опиши полностью следующее:
1) путь к заголовочным файлам MySQL
2) путь к библиотекам MySQL
3) компилятор которым собраны библиотеки MySQL
4) путь к библиотекам Qt
5) компилятор которым собраны библиотеки Qt
6) как собираешь плагин
evCo
Цитата(Litkevich Yuriy @ 15.7.2008, 22:09) *
1) MinGW 5.1.4. это версия установщика, комилятор там 3.4.5. (как у меня)
2)
Цитата
mysql.h: No such file or directory

Не указан путь к нему.


Опиши полностью следующее:
1) путь к заголовочным файлам MySQL
c:\mysql\include
2) путь к библиотекам MySQL
c:\mysql\libs\opt (c:\mysql\libs\debug).
3) компилятор которым собраны библиотеки MySQL
Хз, я их брал из инсталятора MySQL
4) путь к библиотекам Qt
c:\qt\4.3.4\includes
5) компилятор которым собраны библиотеки Qt
MinGW
6) как собираешь плагин
1. Вместе с Qt. Тогда пишет про "mysql.h: No such file or directory"
2. Путем сборки проекта "%Qt%\src\plugins\sqldrivers\mysql\mysql.pro". Выдает ": cannot find -lQtSqld4". При сборке проекта в про файл я добавил пути к библиотекам и заголовочным файлам.


Скопировал файлы из c:\mysql\include в c:\qt\4.3.4\include и еще кудато раскопировал по папкам которые при сборки должны быть в списке папок с заголовочными файлами. Qt собрался. Но ошибки всеравно выскачили :(

C:/Qt/4.3.4/src/sql/drivers/mysql/qsql_mysql.cpp:213: undefined reference to `my
sql_character_set_name@4'
./tmp\obj\debug_shared\qsql_mysql.o: In function `Z10qMakeErrorRK7QStringN9QSqlE
rror9ErrorTypeEPK19QMYSQLDriverPrivate':
C:/Qt/4.3.4/src/sql/drivers/mysql/qsql_mysql.cpp:224: undefined reference to `my
sql_error@4'
C:/Qt/4.3.4/src/sql/drivers/mysql/qsql_mysql.cpp:225: undefined reference to `my
sql_errno@4'
./tmp\obj\debug_shared\qsql_mysql.o: In function `Z14qMakeStmtErrorRK7QStringN9Q
SqlError9ErrorTypeEP13st_mysql_stmt':
...
C:/Qt/4.3.4/src/sql/drivers/mysql/qsql_mysql.cpp:796: undefined reference to `my
sql_stmt_param_count@4'
C:/Qt/4.3.4/src/sql/drivers/mysql/qsql_mysql.cpp:876: undefined reference to `my
sql_stmt_bind_param@8'
C:/Qt/4.3.4/src/sql/drivers/mysql/qsql_mysql.cpp:884: undefined reference to `my
sql_stmt_execute@4'
...


это лиш часть, вообще еще 20-50 подобных строк :)
Litkevich Yuriy
требуются уточнения:
3) в c:\mysql\libs\opt какое расширение у файлов в этом каталоге?
6) п.2) опиши полностью свои действия, делал в "Qt х.х.х Command Prompt"? Какие команды выполнял?
evCo
уточнения:
3) в c:\mysql\libs\opt какое расширение у файлов в этом каталоге?
LIBMYSQL.def
libmysql.a
libmysql.dll
и еще несколько .lib файлов
6) п.2) опиши полностью свои действия, делал в "Qt х.х.х Command Prompt"? Какие команды выполнял?
http://wiki.qtcentre.org/index.php?title=B...ows_using_MinGW
How to Build the Plug-in: шаги 1-5
+ MinGW Tips для создания .а файла.

Кстате после того как пересобрал Qt с заголовочными файлами мускула. При сборке плагина начало писать

C:\Qt\4.3.4\src\plugins\sqldrivers\mysql>mingw32-make
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/4.3.4/src/plugins/sqldrivers/mysql'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_PLUGIN -DQT_SQL_LIB -
DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"..\..\..\..\include\QtCore" -I"..\..\..\..\i
nclude\QtCore" -I"..\..\..\..\include\QtSql" -I"..\..\..\..\include\QtSql" -I"..
\..\..\..\include" -I"c:\MySQL\include" -I"LIBS+=C:\MySQL\lib\opt\liblibmysql.a"
-I"mysql.pro" -I"c:\Qt\4.3.4\include\ActiveQt" -I"tmp\moc\debug_shared" -I"." -
I"..\..\..\..\mkspecs\win32-g++" -o tmp\obj\debug_shared\main.o main.cpp
cc1plus.exe: mysql.pro: not a directory
mingw32-make[1]: *** [tmp/obj/debug_shared/main.o] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.3.4/src/plugins/sqldrivers/mysql'
mingw32-make: *** [debug-all] Error 2


Раньше писало
...
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lQtSqld4
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysqld4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.3.4/src/plugins/sqldrivers/mysql'
mingw32-make: *** [debug-all] Error 2
Zen2004
Парни уже волосы на голове рву опишите пошагово как вы ставите поддержку Мускл уже что только не пробовал !!!!!!!!!
evCo
Цитата(Zen2004 @ 16.7.2008, 11:48) *
Парни уже волосы на голове рву опишите пошагово как вы ставите поддержку Мускл уже что только не пробовал !!!!!!!!!

Да по мануалам... ток ты наверно напиши, что у тебя пишет make, а то так тебе не помогут :)
Попробуй почитать тему с начала.
Zen2004
делаю в командной строке
qmake -o Makefile "INCLUDEPATH+=c:\Program Files\MySQL\MySQL Server 5.1\include" "LIBS+=c:\Program Files\MySQL\MySQL Server 5.1\lib\opt\libmysql.lib" mysql.pro

Отвечает что не так ???
Cannon find file mysql.pro.
Litkevich Yuriy
Цитата(Zen2004 @ 16.7.2008, 16:47) *
c:\Program Files\MySQL\MySQL Server 5.1\include

непрокатит, пробелы не допустимы, см. ссылку в посте №24
Zen2004
Хорошо сделал вот так
Воспользовался утилитой reimp из mingw-utils
получил файлы с расширением а и def
переустановил Mysql так чтобы не было пробелов
выполняб команду он мне опять 25
qmake -o Makefile "INCLUDEPATH+=c:\MySQL\include" "LIBS+=c:\MySQL\lib\opt\liblibmysql.a" mysql.pro

файл не найден cannot find file mysql.pro.
Litkevich Yuriy
а в каком каталоге команду выполняешь?
Zen2004
c:\Qt\4.4.0\src\plugins\sqldrivers\mysql\
Litkevich Yuriy
а сам файл проекта в нем есть?
Zen2004
там есть только файл main.cpp и реадми.тхт

текст маина
/****************************************************************************
**
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
**
** This file is part of the plugins of the Qt Toolkit.
**
** This file may be used under the terms of the GNU General Public
** License versions 2.0 or 3.0 as published by the Free Software
** Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file.  Alternatively you may (at
** your option) use any later version of the GNU General Public
** License if such license has been publicly approved by Trolltech ASA
** (or its successors, if any) and the KDE Free Qt Foundation. In
** addition, as a special exception, Trolltech gives you certain
** additional rights. These rights are described in the Trolltech GPL
** Exception version 1.2, which can be found at
** http://www.trolltech.com/products/qt/gplexception/ and in the file
** GPL_EXCEPTION.txt in this package.
**
** Please review the following information to ensure GNU General
** Public Licensing requirements will be met:
** http://trolltech.com/products/qt/licenses/licensing/opensource/. If
** you are unsure which license is appropriate for your use, please
** review the following information:
** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
** or contact the sales department at sales@trolltech.com.
**
** In addition, as a special exception, Trolltech, as the sole
** copyright holder for Qt Designer, grants users of the Qt/Eclipse
** Integration plug-in the right for the Qt/Eclipse Integration to
** link to functionality provided by Qt Designer and its related
** libraries.
**
** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE. Trolltech reserves all rights not expressly
** granted herein.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/

#include <qsqldriverplugin.h>
#include <qstringlist.h>
#include "../../../sql/drivers/mysql/qsql_mysql.h"

QT_BEGIN_NAMESPACE

class QMYSQLDriverPlugin : public QSqlDriverPlugin
{
public:
    QMYSQLDriverPlugin();

    QSqlDriver* create(const QString &);
    QStringList keys() const;
};

QMYSQLDriverPlugin::QMYSQLDriverPlugin()
    : QSqlDriverPlugin()
{
}

QSqlDriver* QMYSQLDriverPlugin::create(const QString &name)
{
    if (name == QLatin1String("QMYSQL") || name == QLatin1String("QMYSQL3")) {
        QMYSQLDriver* driver = new QMYSQLDriver();
        return driver;
    }
    return 0;
}

QStringList QMYSQLDriverPlugin::keys() const
{
    QStringList l;
    l << QLatin1String("QMYSQL3");
    l << QLatin1String("QMYSQL");
    return l;
}

Q_EXPORT_STATIC_PLUGIN(QMYSQLDriverPlugin)
Q_EXPORT_PLUGIN2(qsqlmysql, QMYSQLDriverPlugin)

QT_END_NAMESPACE
Litkevich Yuriy
конфигурация значит коряво прошла, там должен лежать файл mysql.pro

а в каталоге c:\Qt\4.4.0\src\plugins\sqldrivers есть файлы:
qsqldriverbase.pri
README
sqldrivers.pro
?
Zen2004
Да эти файлы имеются
evCo
Удалось мне все собрать!! :)

Собрал сначала Qt без Баз данных в совсем. Потом отдельно собрал mysql.pro. И ниодной ошибки :)
Правда не могу теперь скомпилировать проект свой :(

C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lpqdll.lib
collect2: ld returned 1 exit status

Что это за библиотека и где ее взять?
Litkevich Yuriy
evCo, покажи свой файл проекта, может от PostgreSQL

Zen2004, могу свой файл mysql.pro дать, попробуй повторить qmake.
TARGET     = qsqlmysql

HEADERS        = ../../../sql/drivers/mysql/qsql_mysql.h
SOURCES        = main.cpp \
          ../../../sql/drivers/mysql/qsql_mysql.cpp

unix: {
    isEmpty(QT_LFLAGS_MYSQL) {
        !contains(LIBS, .*mysqlclient.*):!contains(LIBS, .*mysqld.*) {
            use_libmysqlclient_r:LIBS *= -lmysqlclient_r
            else:LIBS *= -lmysqlclient
        }
    } else {
        LIBS *= $$QT_LFLAGS_MYSQL
        QMAKE_CXXFLAGS *= $$QT_CFLAGS_MYSQL
    }
}

win32:!contains(LIBS, .*mysql.*):!contains(LIBS, .*mysqld.*) {
    LIBS     *= -llibmysql    
}

include(../qsqldriverbase.pri)
evCo
Цитата(Litkevich Yuriy @ 16.7.2008, 14:47) *
evCo, покажи свой файл проекта, может от PostgreSQL

Нету там PostgreSQL, точно. Сеть использую. Все остальное из QCore и QGui.

#include<QSqlQuery>
#include<QSqlDatabase>
#include<QSqlError>
...
    db = new QSqlDatabase;
    db->addDatabase("QMYSQL");
    db->setHostName(host);
    db->setDatabaseName(dbname);
    db->setUserName(username);
    db->setPassword(password);
    return db->open();
Litkevich Yuriy
покажи файл проекта (*.pro), что там написано
evCo
Цитата(Litkevich Yuriy @ 16.7.2008, 19:19) *
покажи файл проекта (*.pro), что там написано

TEMPLATE = app
SOURCES += src/main.cpp \
src/dbclass.cpp \
src/checkfile.cpp \
src/agent_server.cpp \
src/mainwindowimpl.cpp
HEADERS += src/main.h \
src/dbclass.h \
src/checkfile.h \
src/agent_server.h \
src/mainwindowimpl.h
QT += network sql
FORMS += ui/mainform.ui
LIBS += libpqdll.lib
CONFIG += debug build_all

Бугага... :) Запостил и посмотрел

Теперь другая проблема
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lQtSqld4
Litkevich Yuriy
видимо несобраны отладочные библиотеки Qt, собери релиз версию, просто для проверки твоего проекта
в файле проекта измени:
CONFIG += debug build_all
на
CONFIG += release

и командуй
qmake
make release
evCo
Цитата(Litkevich Yuriy @ 16.7.2008, 20:51) *
видимо несобраны отладочные библиотеки Qt, собери релиз версию, просто для проверки твоего проекта
make release

Да, собирает
Litkevich Yuriy
я свой пост обновил, если релиз версия программы собирается, то нужно собрать отладочную версию Qt
evCo
Цитата(Litkevich Yuriy @ 16.7.2008, 21:03) *
я свой пост обновил, если релиз версия программы собирается, то нужно собрать отладочную версию Qt

Да я QDevelop пользуюсь, там проше с параметрами :) Релиз собираеться, но пишет
Запуск...
---------------------- Нормальне завершення ----------------------

А окошко не показывает. В работоспособности программы я на 100% уверен. Если отдельно запустить ехе`шник он запускаеться показывает окошко но пишет что не смог загрузить драйвер :( Кстате в каком виде он сушествует? dll`ка?
Litkevich Yuriy
проблемы лучше выяснять запуская из командной строки, QDevelop еще далек от совершенства.
добавь такую строчку в файл проекта:
CONFIG += console

затем
qmake
make release

и запусти, появится окно программы и консольное окно, в консоли должены пойти сообщения, может они помогут

Цитата(evCo @ 17.7.2008, 1:08) *
Кстате в каком виде он сушествует? dll`ка?

если ты собирал как плагин, например после сборки Qt, то как dll'ка (%QTDIR%\plugins\sqldrivers\)

можно еще в код, где создается соединение, добавить такую строчку:
#include <QtDebug>
...
qDebug() << QSqlDatabase::drivers ()  << "\n\r";
evCo
Цитата(Litkevich Yuriy @ 16.7.2008, 21:22) *
и запусти, появится окно программы и консольное окно, в консоли должены пойти сообщения, может они помогут

Вот что вывело QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC

:( выходит QMYSQL я так и не скомпилил

Как собрать отладочную версию Qt?
Litkevich Yuriy
Цитата(evCo @ 17.7.2008, 1:37) *
Как собрать отладочную версию Qt?

создай отдельную тему с таким названием, а то мы эту тему захламим
evCo
Наконец-то я собрал полностью рабочий драйвер :) Собрал Qt (4.3.3) без поддержки серверов баз данных вообще. Потом собрал Debug Build. Потом у меня наконец по нормальному собрался mysql.pro и теперь среди драйверов появился QMYSQL и QMYSQL3. + Наконец-то проекты нормально компилятся в дебаг моде :) Спасибо Litkevich Yuriy за помощь :)
Zen2004
1. Скачал с офицального сайта qt-win-opensource-src-4.4.0
2. Распаковал в c:\qt\4.4.0\
3. Скачал и установил MinGw C:\MinGW\bin
4. Создал переменные среды
QTDIR=C:\Qt\4.4.0\bin
Path=C:\MinGW\bin;C:\Qt\4.4.0\bin
5. запустил configure.exe без каких либо параметров он создал qmake
6. запустил mingw32-make
7. Все скомпилилось дизайнер примеры ассистент все работает.
8. reimp c:\mysql\lib\opt\libmysql.lib
9. переместил созданные файлы с раширением a и деб по адресу c:\mysql\lib\opt\
10 выполнил команду qmake -o Makefile "INCLUDEPATH+=c:\mysql\include" "LIBS+=c:\mysql\lib\opt\liblibmysql.a" sql.pro
mingw32-make

никакой dll по етому адресу не создалось
а только
вот етот список

README
tmp FOLDER
qsqlmysqld_resource.rc
qsqlmysql_resource.rc
mysql.pro
Makefile.Release
Makefile.Debug
Makefile
main.cpp



при запуске моей программы вот ето

Запуск...
QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE

--------------------- Нормальное завершение ----------------------

теперь скажите в каком шаге я что неправвельно сделал и как исправить
AD
Цитата(Zen2004 @ 17.7.2008, 14:15) *
никакой dll по етому адресу не создалось
а только
вот етот список

README
tmp FOLDER
qsqlmysqld_resource.rc
qsqlmysql_resource.rc
mysql.pro
Makefile.Release
Makefile.Debug
Makefile
main.cpp


теперь скажите в каком шаге я что неправвельно сделал и как исправить

Насколько я понял, тебе надо скомпилировать проект mysql.pro!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.