[Solved] Problem with including QtSql



  • hi
    here is my problem. I am trying to connect with db. i already did that in other example with the help of some users here on this forum which works perfectly fine.
    here is code which does not work
    @
    #include <QApplication>
    #include <QtSql>

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("testTwo");
    db.setUserName("root");
    db.setPassword("xxxxxx");
    
    bool ok = db.open();
    
    return 0;
    

    }
    @

    it produces this error
    @
    QtSql: No such file or directory main.cpp:2
    ‘QSqlDatabase’ was not declared in this scope main.cpp:8
    expected ‘;’ before ‘db’ main.cpp:8
    ‘db’ was not declared in this scope main.cpp:9
    @

    while the previous example i did is working fine. I include the same QtSql file and working but in this example it is giving this error. I also added this line
    QT += sql
    to .pro file
    whats is the problem here? please help



  • maybe #include <QSqlDatabase> ?



  • same error after replacing QtSql with QSqlDatabase



  • error is QSqlDatabase No such file or directory?



  • yes it is the error QSqlDatabase No such file or directory



  • Maybe is a linker problem, are you sure you have correctly installed qt?
    And use correctly library? In this case i think you want build for 4.7 desktop right?



  • yes right but my other example is working fine
    here it is
    @
    #include <QApplication>
    #include <QtSql>

    int main(int argc, char *argv[])
    {
    QCoreApplication a(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("testTwo");
    db.setUserName("root");
    db.setPassword("xxxxxx");
    
    bool ok = db.open();
    //qDebug() << db.lastError().text();
    //qDebug() << ok;
    
    QSqlQuery query(db);
    query.exec&#40;"SELECT * FROM testTable"&#41;;
    while(query.next()) {
        QString firstName = query.value(0).toString();
        QString secondName = query.value(1).toString();
        //int id = query.value(2).toInt();
        qDebug() << "First Name: " << firstName << "Last Name:" << secondName << "\n";
        //qDebug() << db.lastError();
    }
    return 0;
    

    }

    @



  • your pro files are similar? try clean build?



  • you mean i should close my qt creator and open again write the code from start?
    [quote author="chetankjain" date="1286900346"]your pro files are similar? try clean build?[/quote]



  • I meant, you have one project with working Qt sql code, and another failing to find the includes, so just compare the .pro files and see if they are similar.

    Next, in Qt Creator, go to Build menu and select "Clean Project" option and then rebuild ... sometimes this could help ...



  • i also did that clean project from build menu but still the same problem

    i think both pro files are different
    this .pro is for that example which is working
    @
    #-------------------------------------------------

    Project created by QtCreator 2010-10-10T13:05:29

    #-------------------------------------------------

    QT += core gui

    QT += sql

    TARGET = dbExample
    TEMPLATE = app

    SOURCES += main.cpp
    db.cpp

    HEADERS += db.h
    connection.h

    FORMS += db.ui

    @

    and this is the one which is not working
    @
    #-------------------------------------------------

    Project created by QtCreator 2010-10-12T01:37:23

    #-------------------------------------------------

    QT += core gui
    QT += sql;

    TARGET = untitled
    TEMPLATE = app

    SOURCES += main.cpp
    mainwindow.cpp

    HEADERS += mainwindow.h

    FORMS += mainwindow.ui

    @



  • The second one has a semi colon after SQL, try removing that.
    You could use this directly
    @
    QT += core gui sql
    @
    better to have one definition instead of multiple, just easier to maintain



  • yup your are right its working now



  • good to hear that



  • Yes, but maybe you have to read some qt doc :P


Log in to reply
 

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