Portál AbcLinuxu, 7. května 2025 21:37

Dotaz: QT a MySQL driver

12.3.2012 10:53 Fnenks | skóre: 4
QT a MySQL driver
Přečteno: 478×
Odpovědět | Admin
Zdravim, konecne jsem se v QT dostal k databazim, ale sekl jsem se hned ze startu. Kod je jednoduchy, ale bohuzel se mi program nechce pripojit.

Dozvedel jsem se, ze musim nejdriv predkompilovat nejakej driver, bohuzel v tehle vecech jsem celkem lama, jedine co dokazu zkompilovat je hotovy program v QT Creator nebo VS2010. Pouzivam windows 7. Byl bych moc vdecny kdyby mi nekdo dal step-by-step navod, jak na to. Diky

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.3.2012 12:18 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
Odpovědět | | Sbalit | Link | Blokovat | Admin
Preinstaloval jsem mysql5.0 a zaskrtl jsem developer components, tzn ze se mi nainstalovaly slozky: include, lib. To byl predpokladam prvni krok, ale co delat dal to nevim :(
12.3.2012 12:28 Ivan
Rozbalit Rozbalit vše Re: QT a MySQL driver
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ty si kompilujes QTcko sam na Windows? Pak asi musis rucne nastavit promenne INCLUDE, PATH a LIB(anebo LIBPATH?) v MSVC command prompt. Pak spust configure.exe a povol kompilaci DB driveru.

PS: pouzivas 32bit anebo 64bit mod? A mas placenou anebe Express verzi MSVC?
12.3.2012 12:50 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
VS jen Express verze, ale VS uz nepouzivam, pac QT ma vlastni vyvojove prostredi. QTcko si nekompiluju, jen pomoci neho kompiluju programy napsane v QT, jestli se ptas na tohle.
12.3.2012 12:54 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
Hmm tohle je celkem problem a zacinam mit obavy ze to nezvladnu. Umim syntaxi c++ a zaklady QT, ale to je vsechno. Co se tyce kompilace a tak, tak v tom vubec nemam zkusnosti. Dokonce mam tuseni ze ve Windows se to dela jinak nez na Linuxu, ale to jsem jen nekde postrehl, takze si nejsem jisty, pac ja ani nevim jak Linux vypada :D
12.3.2012 13:08 Ivan
Rozbalit Rozbalit vše Re: QT a MySQL driver
Kompilace QTcka je vice-mene v pohode, akorat to trva hrozne dlouho. Na netu najdes spoustu navodu. Otazka je, jestli to QT SDK, ktery se da stahnout z webu, obsahuje podporu pro MySQL. Na 100% jsem si jistej, ze podpora pro Oracle tam by default neni.

BTW: to SDK je oficialne pro MSVC 2008, (verze 2010 jeste tusim neni podporovana).

V QTcku je nejaky singleton SQLDriver(anebo jak se to jmenuje), ktery ti vrati iterator. Pomoci toho iteratoru zjistis jaky vsechny databaze podporuje tvoje instalace QT.

12.3.2012 13:16 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
Qt z počátku neobsahuje modul QMYSQL, ten si musim nekde zkompilovat, bohuzel nevim jak na to..

QT obsahuje jen QSQLITE modul, s tim pracuju bez problemu.
12.3.2012 13:53 Ivan
Rozbalit Rozbalit vše Re: QT a MySQL driver
Hmm, to jsem taky nikdy nedelal. Zkompilovat cely QTcko pomoci MSVC Express 2010 neni zadnej velkej problem, na webu na to jsou navody.
12.3.2012 17:58 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: QT a MySQL driver
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jestli máš nainstalové Qt SDK, tak je postup dost jednoduchý, např.:
Qt SDK v C:/QtSDK
a MySQL v C:/MySQL
Stačí oteřít Qt Command Prompt, který bývá součástí Qt SDK a obsahuje správně nastavené proměnné prostředí, v něm přejít do cesty kde je db driver, např.:
cd C:/QtSDK/QtSources/4.7.4/src/plugins/sqldrivers/mysql
potom pomocí qmaku vytvoříš makefily pro zkompilování ovladače:
qmake "INCLUDEPATH+=C:/MySQL/include" "LIBS+=C:/MySQL/lib/libmysql.lib" CONFIG+=release mysql.pro
a příkazem mingw32-make nebo nmake výsledek zkompiluješ, výhodnější je používat samozřejmě mingw, nmake se nevyplatí moc používat, pokud nemáš plné Visual Studio, pak jsou problémy s distribucí binárek
12.3.2012 19:07 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
QT SDK i MySQL mam nainstalovane v E:/

db driver nemam nemam nikde, pouze qsqlited4.dll a qsqlite4.dll jsou v: e:\Programy\QtSDK\Desktop\Qt\4.7.4\mingw\plugins\sqldrivers\

Nikdy jsem nekompiloval nic mimo QT Creator, takze vubec nevim co je makefile qmake, atd..

qmake.exe soubor jsem nasel, tak jsem prilozil .bat soubor kde jsem napsal: http://codepad.org/zGPmY02c

Vypis vypada takto: http://www.2i.cz/37bfd0fa29
12.3.2012 19:09 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
oprava: oboje mam nainstalovane E:/Programy
12.3.2012 19:48 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: QT a MySQL driver
Okey, máš Qt SDK, takže bys měl mít Qt Command Prompt, který najdeš v menu start->Qt SDK->Desktop->Qt Command. Nebo na začátek toho baťáku souboru přidej spuštění e:\Programy\QtSDK\Desktop\Qt\4.7.4\mingw\bin\qtenv2.bat.

Na to, aby jsi zkompiloval ovladače pro databáze potřebuješ zdrojové kódy Qtčka, ty se dají doinstalovat přes utilitu SDKMaintenanceTool.exe, kterou najdeš v e:\Programy\QtSDK.

Jakmile to budeš mít, tak můžeš přejít do adresáře e:\Programy\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\mysql

a tam pak spustíš výše psané příkazy....výsledek by tedy měl vypada takto:
e:\Programy\QtSDK\Desktop\Qt\4.7.4\mingw\bin\qtenv2.bat
cd e:\Programy\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\mysql
qmake.exe "INCLUDEPATH+=e:/Programy/MySQL/MySQL Server 5.5/include" "LIBS+=e:/Programy/MySQL/MySQL Server 5.5/lib/libmysql.lib" "CONFIG+=release debug" mysql.pro
e:\Programy\MinGW\bin\mingw32-make.exe
pause
Nakonec ještě vytvoená dllka musíš zkopírovat do e:\Programy\QtSDK\Desktop\Qt\4.7.4\mingw\plugins\sqldrivers\
12.3.2012 20:34 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
diky, skvele napsana odpoved, jdu na to, pak napisu jak to dopadlo..
12.3.2012 23:04 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
Tak jsem se posunul zas o kousek dal, snad uz jsem blizko cile :D

Doinstaloval jsem QTSources a na adrese e:\Programy\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\mysql jsem vytvoril 1.bat:

e:\Programy\QtSDK\Desktop\Qt\4.7.4\mingw\bin\qtenv2.bat cd e:\Programy\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\mysql qmake.exe "INCLUDEPATH+=e:/Programy/MySQL/MySQL Server 5.5/include" "LIBS+=e:/Programy/MySQL/MySQL Server 5.5/lib/libmysql.lib" "CONFIG+=release debug" mysql.pro e:\Programy\MinGW\bin\mingw32-make.exe pause

Spustil jsem a vypis byl: http://www.2i.cz/eb8b94be6d

Dale jsi psal ze mam zkopirovat nejake dllka, ale ty jeste nemam nebo nevim kde jsou. Zkousel jsem spustit mysql.pro na adrese kde je 1.bat, ale nejde zkompilovat(vypise chybu)
Řešení 1× (Fnenks (tazatel))
12.3.2012 23:27 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: QT a MySQL driver
Zkus namísto
qmake.exe "INCLUDEPATH+=e:/Programy/MySQL/MySQL Server 5.5/include" "LIBS+=e:/Programy/MySQL/MySQL Server 5.5/lib/libmysql.lib" "CONFIG+=release debug" mysql.pro
použít samostatně
qmake.exe "INCLUDEPATH+=e:/Programy/MySQL/MySQL Server 5.5/include" "LIBS+=e:/Programy/MySQL/MySQL Server 5.5/lib/libmysql.lib" CONFIG+=release mysql.pro
mingw32-make
a
qmake.exe "INCLUDEPATH+=e:/Programy/MySQL/MySQL Server 5.5/include" "LIBS+=e:/Programy/MySQL/MySQL Server 5.5/lib/libmysql.lib" CONFIG+=debug mysql.pro
mingw32-make
Měl by jsi z toho dostat několiv výstupů ve stylu :
mingw32-make -f Makefile.Release mingw32-make[1]: Entering directory `C:/QtSDK/QtSources/4.7.4/src/plugins/sqldrivers/mysql' g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_NO_DEBUG -DQT_PL UGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\Desktop\Qt\4.7.4 \mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtSql" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"c:\MySQL\include" -I"c:\QtSDK\Deskto p\Qt\4.7.4\mingw\include\ActiveQt" -I"release" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\default" -o release\main.o main.cpp C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_NO_DEBUG -DQT_PLUGI N -DQT_SQL_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\Desktop\Qt\4.7.4\mi ngw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtSql" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"c:\MySQL\include" -I"c:\QtSDK\Desktop\Q t\4.7.4\mingw\include\ActiveQt" -I"release" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\default" -D__GNUC__ -DWIN32 ..\..\..\sql\drivers\mysql\qsql_mysql.cpp -o release\qsql_mysql.moc
Výsledná dllka najdeš v podadresářích release a debug. Pokud ti kompilace vypíše nějakou chybu, pastni ji sem....
Řešení 1× (Fnenks (tazatel))
12.3.2012 23:43 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
no, ani jeden ani druhy mi nevytvori vubec zadny vystup, a kdyz se pokusim zkompilovat mysql.pro tak to napise tyhle chyby: http://2i.cz/fb8b94be6d
13.3.2012 00:04 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
a nevadi nahodou to, ze qmake.exe je uplne nekde jinde?
13.3.2012 00:10 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
no tak jsem do tehle slozky zkopiroval qmake.exe z "e:\Programy\QtSDK\Desktop\Qt\4.7.4\mingw\bin\", spustil jsem ty *.bat soubory s prikazy, cos napsal a vytvorilo mi to 2 slozky a nejake soubory
13.3.2012 00:31 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: QT a MySQL driver

Kopírování qmaku je nesmysl, to jde normálně bez toho...zkus ty příkazy prostě pastnout postupně do té Qt Command Prompt, bez baťáků. Otvírat mysql.pro ve qtcreatoru je zbytečnost, ten qmake ti vytvoří soubor Makefile, Makefile.Release|Debug a ty pak používá mingw32-make ke zkompilování.

Pokud tam nemáš nějaké chyby, tak by z qmaku ani žádný výstup být neměl.

13.3.2012 09:51 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
u Qt Command Prompt mam ten problem, ze se nemuzu dostat z disku C na disk E. Prikazem "cd" se muzuu pohybovat jen na C, kdyz dam napr CD E:/ tak to nefunguje
13.3.2012 10:22 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: QT a MySQL driver
aktuální disk změníš napsáním E:
13.3.2012 11:40 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
aha oukej..

Takze jsem vytvoril 2.bat s kodem:

cd e:\Programy\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\mysql

qmake.exe "INCLUDEPATH+=e:/Programy/MySQL/MySQL Server 5.5/include" "LIBS+=e:/Programy/MySQL/MySQL Server 5.5/lib/libmysql.lib"

CONFIG+=release mysql.pro

mingw32-make

pause

vypis byl: http://www.2i.cz/6b9a85af7c

3.bat s kodem:

cd e:\Programy\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\mysql

qmake.exe "INCLUDEPATH+=e:/Programy/MySQL/MySQL Server 5.5/include" "LIBS+=e:/Programy/MySQL/MySQL Server 5.5/lib/libmysql.lib"

CONFIG+=debug mysql.pro

mingw32-make

pause

vypis byl: http://www.2i.cz/7a8b94be6d

Vytvorily se prazdne slozky Release a debug a soubory: Makefile, Makefile.debug, Makefile.release, qsqlmysql_resource.rc, qsqlmysqld_resource.rc
13.3.2012 11:41 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
ty bat soubory jsem samozrejme otevrel v Qt Command Prompt
13.3.2012 12:31 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: QT a MySQL driver
CONFIG+=release mysql.pro je součástí příkazu, který začíná qmake.exe, celý příkaz dohromady má být:
qmake.exe "INCLUDEPATH+=e:/Programy/MySQL/MySQL Server 5.5/include" "LIBS+=e:/Programy/MySQL/MySQL Server 5.5/lib/libmysql.lib" CONFIG+=release mysql.pro
13.3.2012 12:50 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
mam to spravne, jenom jak jsem to kopiroval jsem tak jsem dal omylem enter navic
13.3.2012 13:32 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: QT a MySQL driver
V tom případě už mě pouze napadá, že v adresáři MySQL/include nemáš hlavičkové soubory (měl by tam být mysql.h a asi 20 dalších) nebo je ta cesta k hlavičkovým souborům neúplná.

Je vhodné vkládat úryvky z konzole nebo souborů do tagů, které je zvýrazní:pre, bloqoute nebo code..
13.3.2012 13:51 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
JDE TO! misto /Programy/MySQL/MySQL Server 5.5/ jsem vytvoril jednoslovnou slozku /aaa/ , tam jsem hodil include a lib a spustil jsem upravene .bat(y)

Ted mam qsqlmysql4.dll a qsqlmysqld4.dll ve slozkach release a debug, to jsou predpokladam ty soubory co potrebuju..?
13.3.2012 13:57 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: QT a MySQL driver
Ano, oba ještě zkopíruj do e:\Programy\QtSDK\Desktop\Qt\4.7.4\mingw\plugins\sqldrivers\ a mělo by ti to fungovat.
13.3.2012 14:04 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
Oukej, diky, ze si se mnou mel trpelivost :D Jdu to vyzkuset..
13.3.2012 14:33 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
jeste jsem tam pro jistotu zkopiroval i oba *.a soubory

Udelal jsem si tenhle program: http://codepad.org/l0q2nsS5 ale databaze se neotevre: db.open() vraci:0

pokud vlozim hlavicku: #include < Q MYSQLDriver> //bez mezery program vypise tyhle chyby: http://codepad.org/ZMS1GnbW
13.3.2012 14:49 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: QT a MySQL driver
Bez toho includu je to správně, QSqlDatabase si sám includuje potřebné závislosti.

Důvod proč ti to neotevře databázi bude nejspíš ve špatných přístupových údajích, celkem pochybuju že tam máš uživatele localhost s heslem root :)
13.3.2012 14:56 Fnenks | skóre: 4
Rozbalit Rozbalit vše Re: QT a MySQL driver
je, mas pravdu, instaloval jsem novy mysql a username jsem vlozil taktez root misto localhost

Uz to funguje, nemuzu tomu uverit :D
13.3.2012 00:35 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: QT a MySQL driver

Pokud bys to chtěl sestavovat v qtcreatoru tak toho souboru musíš přidat tyhle řádky (do mysql.pro), ty udávají kde se mají hledat knihovny a hlavičkové soubory, bez těch ten ovladač nejde zkompilovat ani slinkovat dohromady.

INCLUDEPATH+=e:/Programy/MySQL/MySQL\ Server\ 5.5/include
LIBS+=e:/Programy/MySQL/MySQL\ Server\ 5.5/lib/libmysql.lib

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.