[Solved] How to "Qt 4.8 + MySQL with ODBC on Windows"?
-
wrote on 6 Jun 2014, 20:07 last edited by
Hi everyone. I’ve been reading other posts about this, but they either end up talking about Linux or Mac or they don’t get any solutions.
I’m trying to make a simple testing app with Qt 4.8.6 that connects to a database.. I just want the database connection to work since I’m not exactly new at Qt. The problem is that I tried to use QMYSQL driver but I don’t have it available and building it won’t be that handy for what I need.
This is the code I use to create and open the DB connection:
@ db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("localhost");
db.setDatabaseName("test");
db.setUserName("compusciens");
db.setPassword("kakolukiya");
db.setPort(3306);
if (!db.open())
{
QMessageBox::critical(0, QObject::tr("Database Error"),
db.lastError().text());}
@
And the db.lastError() reports:“[Microsoft][ODBC Driver manager]Data source name not found and no default driver have been specified
QODBC3: Unable to connect”
(My translation may not be the same as the Windows english version original message)Notes:
I also have:
@ Qt += sql@
MySQL server is running
Can you point me in the right direction please? What could be wrong?
-
wrote on 6 Jun 2014, 20:50 last edited by
-Hi, try
xxxxEDIT: Sorry, my bad, I thought it was a SQLServer :-(
Must be getting old.
Indeed for MySQL you need a DSN. -
wrote on 6 Jun 2014, 20:50 last edited by
You need to setup a DSN, there's already a thread regarding ODBC-connection: https://qt-project.org/forums/viewthread/3478
-
wrote on 6 Jun 2014, 21:10 last edited by
Hi, thanks for your replies.
I've already set a system DSN. But just to be sure...
Is Xampp's MySQL service enough for this? Or MySQL Server is necessary?
I have both on my machine, but only Xampp's is up.
-
wrote on 7 Jun 2014, 10:36 last edited by
Is MySQL up? If so, you need to set the DSN in your connection string.
Short example
@
db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver={MySQL ODBC 5.1 Driver};DATABASE=agp-dbserver01;");
@Or try like this:
@
db.setDatabaseName("Driver={MySQL ODBC 5.1 Driver};USER=youruser;Password=yourpw;SERVER=127.0.0.1;");
@I'm also sure you will find good examples.
Have a nice weekend!
-
wrote on 9 Jun 2014, 01:19 last edited by
You were right @jensen82. I had to set a DSN with the same name of the database I wished to connect to... I don't know if there's an especific reason for this, as well as if I need to use MySQL server and not Xampp's MySQL service...
Anyway, this post is now solved :)
Thanks to you both..!
-
wrote on 9 Jun 2014, 07:36 last edited by
Hi BlastDV,
Please add <solved> in to your title.
Thanx.
-
wrote on 9 Jun 2014, 17:16 last edited by
Thanks for reminding me @ankursaxena!
By the way, I forgot to mention, I tested it too with Xampp's MySQL service and it worked fine! I don't know if there will be any problem with it but I tested it with some querys and it does what I expected to...
-
wrote on 10 Jun 2014, 10:37 last edited by
The only problem with ODBC-Connections that you have to setup a DSN. With the driver/plugin for Qt you can use MySQL without DSN-Setup.
-
wrote on 10 Jun 2014, 19:29 last edited by
Do you mean the QMYSQL driver? I was reading something about building it but right now I don't really have time to get into that since I'm on a little rush to finish my project, and the ODBC's DSN setup wont be a problem for it.
But yeah, I'll learn to do that as well as migrating to Qt 5 :D
1/10