[SOLVED]QSqlDatabase
-
Hi guys,
i'm just freaking out trying to connect to a database with my qt.
First of all, I run the QT Creator 2.7.0 (based on QT 5.0.2) on Windows 8.
I tried to look through the plugins installed with QT, but I didn't noticed anything related to database, mysql or whatever.So, I have my method:
@void MainWindow::connectDB()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("postgres");
db.setUserName("postgres");
db.setPassword("password");
bool ok = db.open();
}@and I also included the
@#include <QtSql/QSqlDatabase>@and when i try to call my method, i get a lot of errors like this:
!http://i49.tinypic.com/25k6b2v.jpg(error)!I'll copy you just the first:
@mainwindow.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl QSqlDatabase::~QSqlDatabase(void)" (_imp??1QSqlDatabase@@QEAA@XZ) referenced in function "private: void __cdecl MainWindow::connectDB(void)" (?connectDB@MainWindow@@AEAAXXZ)@Does someone know how to deal with that?
Thanks a lotCheers,
Nick -
Hi and welcome to DevNet,
Did you add QT += sql in your pro file ?
On a related note, did you build the "MySql":http://qt-project.org/doc/qt-5.0/qtsql/sql-driver.html#how-to-build-the-qmysql-plugin-on-windows plugin ?
-
[quote author="SGaist" date="1366208236"]Hi and welcome to DevNet,
Did you add QT += sql in your pro file ?
On a related note, did you build the "MySql":http://qt-project.org/doc/qt-5.0/qtsql/sql-driver.html#how-to-build-the-qmysql-plugin-on-windows plugin ?[/quote]
Hi and thanks :D
about building the MySql...i experience a lot of troubles in doing that...
the terminal doesn't even take in count the 'qmake' command
but if it's the solution for my problems, than I have to figure out how to build it haha -
!http://i49.tinypic.com/71srkl.jpg(version)!
i'm using the 64bit of Qt....can this be the problem? :S
-
For the qmake problem, simply provide the complete path to qmake when building the plugin
-
[quote author="SGaist" date="1366211235"]For the qmake problem, simply provide the complete path to qmake when building the plugin[/quote]
The thing is that i cannot find the plugin that is written here:
@cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=C:/MySQL/include" "LIBS+=C:/MYSQL/MySQL Server <version>/lib/opt/libmysql.lib" mysql.pro
nmake@i mean the 'mysql' in the sqldrivers folder...
-
Get the source package then, you'll find what you need in there
-
-
Well, at the top of the download page you can choose a Windows SDK, nothing confusing there. However, are you sure you are searching in the right place for the mysql driver? If you already have an SDK installation, the full path to the MySQL driver folder is this
@
QtRootInstallationFolder/Src/qtbase/src/plugins/sqldrivers/mysql
@ -
haha, that's nice :D
ok, the files are there, so i just have to compile them with the 'qmake' through my windows terminal?
compiled it (i saw that with the normal terminal the qmake command didn't work, so i did it with the terminal provided by Qt), but now the final make command gives me an error lol@C:\Qt\Qt5.0.2\5.0.2\Src\qtbase\src\plugins\sqldrivers\mysql>make
make -f Makefile.Release all
make[1]: Entering directory/c/Qt/Qt5.0.2/5.0.2/Src/qtbase/src/plugins/sqldrive rs/mysql' g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -fno-exceptions -frtti -W all -Wextra -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCE PTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I. -I'/usr/local/in clude' -I'C:/Qt/Qt5.0.2/5.0.2/mingw47_32/include' -I'C:/Qt/Qt5.0.2/5.0.2/mingw47 _32/include/QtSql' -I'C:/Qt/Qt5.0.2/5.0.2/mingw47_32/include/QtSql/5.0.2' -I'C:/ Qt/Qt5.0.2/5.0.2/mingw47_32/include/QtSql/5.0.2/QtSql' -I'C:/Qt/Qt5.0.2/5.0.2/mi ngw47_32/include/QtCore' -I'.moc/release_shared' -I'../../../../mkspecs/win32-g+ +' -o .obj/release_shared/main.o main.cpp In file included from main.cpp:44:0: ../../../sql/drivers/mysql/qsql_mysql.h:52:19: fatal error: mysql.h: No such fil e or directory compilation terminated. make[1]: *** [.obj/release_shared/main.o] Error 1 make[1]: Leaving directory
/c/Qt/Qt5.0.2/5.0.2/Src/qtbase/src/plugins/sqldriver
s/mysql'
make: *** [release-all] Error 2
@ -
OK, one step closer :). I don't quite get what you mean with the terminal issue, but are you giving the path to the mysql include folder in your qmake command, as you wrote in a previous post?
@
"INCLUDEPATH+=C:/MySQL/include"
@
The mysql.h file should be in there. -
OK
everything done, compiling with both qmake and make, and no errors came out :D
now, going back to Qt:
i've put one line of code to try the DB:
@void MainWindow::connectDB()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
}
@and the output is just:
@C:\Users\Nick\Documents\QT_Projects\HotelManagement\mainwindow.cpp:39: error: undefined reference to `_imp___ZN12QSqlDatabase17defaultConnectionE'@
is it something that i just don't get?