[SOLVED] QSqlDatabase::addDatabase("QSQLITE","localdb"); problem with name

  • With this code in the constructor of my mainwindow:
    db = QSqlDatabase::addDatabase("QSQLITE","localdb");
    if (!db.open()) {
    QMessageBox::critical(0, QObject::tr("Database Error"),

    model = new QSqlTableModel(this);
    qDebug() << "SQL LastError:" << model->lastError().text();


    and in the destructor:

    delete ui;

    output at start:
    (I don't have the qmessagebox and my table view stay blank.)
    SQL LastError: " Unable to find table items"

    output at close app:
    QSqlDatabasePrivate::removeDatabase: connection 'localdb' is still in use, all queries will cease to work.

    If I remove the name of the connection, "localdb" and let the system use the default name, I have this:
    @ db = QSqlDatabase::addDatabase("QSQLITE");

    SQL LastError: " "

    and I have my datas shown in the table view... ?!?!?
    No error at close.

    What am I doing wrong with the connection name?

    I need it because this app will have 2 separates connections, one local with sqlite and another to a remote db2 server.

  • Hi,

    For your first problem, you haven't included the database name in your QSqlTableModel constructor so the default connection is used. So create your model like this:
    model = new QSqlTableModel(this,db);

    For your second problem, try to remove the database like this:
    db = QSqlDatabase();

  • Work for both solutions :)

    I didn't know the model needed to specify the connection name :)

    I understand for the remove that I need to disconnect the db variable with the database name/connection I want to delete... And seems to not have a method to disconnect so, replacing the object with a default one have the same effect...

    Thank you very much :)

  • Nice :) . Don't forget to edit your initial post and add [SOLVED] to the title.

Log in to reply

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