[Solved] How to "Qt 4.8 + MySQL with ODBC on Windows"?



  • 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?



  • -Hi, try
    xxxx

    EDIT: Sorry, my bad, I thought it was a SQLServer :-(
    Must be getting old.
    Indeed for MySQL you need a DSN.



  • You need to setup a DSN, there's already a thread regarding ODBC-connection: https://qt-project.org/forums/viewthread/3478



  • 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.



  • 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!



  • 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..!



  • Hi BlastDV,

    Please add <solved> in to your title.

    Thanx.



  • 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...



  • 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.



  • 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


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.