Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Special Interest Groups
  3. C++ Gurus
  4. Sqlite connection QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

Sqlite connection QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

Scheduled Pinned Locked Moved C++ Gurus
13 Posts 6 Posters 28.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    SherifOmran
    wrote on last edited by
    #1

    Hello Gurus,

    I am trying to fetch data from an SQLite database, it works fine, however when I try to call the function again it works but with an debug message

    QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

    here is my code, do I close the connection correctly? thanks

    @QSqlQuery MainForm::QuerydB(QString Query, QString dataBaseFile)
    {
    //QSqlQuery result;
    //QString dbname;

    database = new QSqlDatabase();
    //set database driver to QSQLITE
    *database = QSqlDatabase::addDatabase("QSQLITE");
    database->setDatabaseName(dataBaseFile);
    qDebug() << dataBaseFile;
    
    if(!database->open())
    {
        QMessageBox::warning(0,"Error","Couldn't open setting database");
        //qApp->setProperty("DatabaseOpen","ERROR");
    }
    
    
     // read data
     QSqlQuery result (Query, *database);
    
    //close database;
     QString connname = database->connectionName();
    
    
     database->close();
     database->removeDatabase(dataBaseFile);
     delete database;
    
     return result;
    

    }
    @

    Christian EhrlicherC 1 Reply Last reply
    0
    • N Offline
      N Offline
      Neutron Stein
      wrote on last edited by
      #2

      I think you have to call QSqlDatabase::addDatabase("QSQLITE"); once in your program

      Never Seen !

      1 Reply Last reply
      1
      • S Offline
        S Offline
        SherifOmran
        wrote on last edited by
        #3

        But how can I then make it inform of a function?

        1 Reply Last reply
        0
        • F Offline
          F Offline
          franku
          wrote on last edited by
          #4

          You may want to look "here":http://qt-project.org/forums/viewthread/18722/.

          This, Jen, is the internet.

          1 Reply Last reply
          0
          • N Offline
            N Offline
            Neutron Stein
            wrote on last edited by
            #5

            you just have to call it in the ctor of you class i think

            Never Seen !

            1 Reply Last reply
            0
            • F Offline
              F Offline
              franku
              wrote on last edited by
              #6

              Normally you don't need to open the database connection more than once within your application. You also want to look at the sample code "here":http://doc.qt.nokia.com/4.7-snapshot/qsqldatabase.html#details.

              Since each database connection will only have a single instance within the whole application you are able to access it via QSqlDatabase::connection().

              I would suggest that you have three static functions in your MainForm. One that opens the database connection, one the exectues a query and the third to close the database. The first and the third are called i.e. in the MainForm constructor/destructor, as Neutron Stern wrote, the second whenever you need a query.

              Please read the mentioned documentation there you will find the needed help.

              This, Jen, is the internet.

              1 Reply Last reply
              0
              • Z Offline
                Z Offline
                zakarrrr
                wrote on last edited by
                #7

                For all people who looks for a good solution, this is what i found, tried and works fine:
                (PS : I have an application, which has more then one project in it, means more then one sql-connection)

                Call addDatabase() only once in your application (see second parameter, can be anything)

                @QSqlDatabase::addDatabase("QSQLITE", "MyDBConnectionName");@

                Do this first whenever you want to do some stuff with your DB

                @if (QSqlDatabase::contains("MyDBConnectionName"))
                {
                ...e.g. query@

                Now you must get an instance to db-object

                @QSqlDatabase sqlDatabase = QSqlDatabase::database("MyDBConnectionName");@

                Add DB information to your query

                @QSqlQuery query(QSqlDatabase::database("MyDBConnectionName"));@

                If a person is doing things behind you, he s clearly an ...
                Because he is an ..., he will tell any stories, which will make you think he is ok! -.-

                N 1 Reply Last reply
                1
                • Z zakarrrr

                  For all people who looks for a good solution, this is what i found, tried and works fine:
                  (PS : I have an application, which has more then one project in it, means more then one sql-connection)

                  Call addDatabase() only once in your application (see second parameter, can be anything)

                  @QSqlDatabase::addDatabase("QSQLITE", "MyDBConnectionName");@

                  Do this first whenever you want to do some stuff with your DB

                  @if (QSqlDatabase::contains("MyDBConnectionName"))
                  {
                  ...e.g. query@

                  Now you must get an instance to db-object

                  @QSqlDatabase sqlDatabase = QSqlDatabase::database("MyDBConnectionName");@

                  Add DB information to your query

                  @QSqlQuery query(QSqlDatabase::database("MyDBConnectionName"));@

                  N Offline
                  N Offline
                  nasimChildOfDesert
                  wrote on last edited by
                  #8

                  @zakarrrr

                  Hi
                  I have the sampe problem and I solve it by this command :
                  if (QSqlDatabase::contains("NameOfConnection"))
                  {
                  QSqlDatabase::removeDatabase("NameOfConnection");
                  return
                  }
                  QSqlDatabase::addDatabase("QSQLITE", "NameOfConnection");
                  I hope it will beuseful.

                  1 Reply Last reply
                  0
                  • S SherifOmran

                    Hello Gurus,

                    I am trying to fetch data from an SQLite database, it works fine, however when I try to call the function again it works but with an debug message

                    QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

                    here is my code, do I close the connection correctly? thanks

                    @QSqlQuery MainForm::QuerydB(QString Query, QString dataBaseFile)
                    {
                    //QSqlQuery result;
                    //QString dbname;

                    database = new QSqlDatabase();
                    //set database driver to QSQLITE
                    *database = QSqlDatabase::addDatabase("QSQLITE");
                    database->setDatabaseName(dataBaseFile);
                    qDebug() << dataBaseFile;
                    
                    if(!database->open())
                    {
                        QMessageBox::warning(0,"Error","Couldn't open setting database");
                        //qApp->setProperty("DatabaseOpen","ERROR");
                    }
                    
                    
                     // read data
                     QSqlQuery result (Query, *database);
                    
                    //close database;
                     QString connname = database->connectionName();
                    
                    
                     database->close();
                     database->removeDatabase(dataBaseFile);
                     delete database;
                    
                     return result;
                    

                    }
                    @

                    Christian EhrlicherC Offline
                    Christian EhrlicherC Offline
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on last edited by
                    #9

                    Your call to removeDatabase() is wrong - it takes the database connection name, not a filename: https://doc.qt.io/qt-6/qsqldatabase.html#removeDatabase

                    Also why do you call add/removeDatabase every time instead openening it once as described in the documentation?

                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                    Visit the Qt Academy at https://academy.qt.io/catalog

                    N 1 Reply Last reply
                    1
                    • Christian EhrlicherC Christian Ehrlicher

                      Your call to removeDatabase() is wrong - it takes the database connection name, not a filename: https://doc.qt.io/qt-6/qsqldatabase.html#removeDatabase

                      Also why do you call add/removeDatabase every time instead openening it once as described in the documentation?

                      N Offline
                      N Offline
                      nasimChildOfDesert
                      wrote on last edited by
                      #10

                      @Christian-Ehrlicher

                      thaks you for ur answer, we use it for our unit test.
                      I have another question abou threading may i ask u?

                      Christian EhrlicherC 1 Reply Last reply
                      0
                      • N nasimChildOfDesert

                        @Christian-Ehrlicher

                        thaks you for ur answer, we use it for our unit test.
                        I have another question abou threading may i ask u?

                        Christian EhrlicherC Offline
                        Christian EhrlicherC Offline
                        Christian Ehrlicher
                        Lifetime Qt Champion
                        wrote on last edited by
                        #11

                        @nasimChildOfDesert said in Sqlite connection QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.:

                        I have another question abou threading may i ask u?

                        You have to create a new db connection per thread. There are a lot of threads about this in the forum.

                        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                        Visit the Qt Academy at https://academy.qt.io/catalog

                        N 1 Reply Last reply
                        0
                        • Christian EhrlicherC Christian Ehrlicher

                          @nasimChildOfDesert said in Sqlite connection QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.:

                          I have another question abou threading may i ask u?

                          You have to create a new db connection per thread. There are a lot of threads about this in the forum.

                          N Offline
                          N Offline
                          nasimChildOfDesert
                          wrote on last edited by
                          #12

                          @Christian-Ehrlicher
                          no imean do you know agood document about threading, mutex, socketprograming TCP
                          there are a lot of info on the net but most of them are not complete and no practical sample

                          Christian EhrlicherC 1 Reply Last reply
                          0
                          • N nasimChildOfDesert

                            @Christian-Ehrlicher
                            no imean do you know agood document about threading, mutex, socketprograming TCP
                            there are a lot of info on the net but most of them are not complete and no practical sample

                            Christian EhrlicherC Offline
                            Christian EhrlicherC Offline
                            Christian Ehrlicher
                            Lifetime Qt Champion
                            wrote on last edited by
                            #13

                            @nasimChildOfDesert said in Sqlite connection QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.:

                            threading, mutex, socketprograming TCP

                            You don't need threading for sockets/tcp when you use Qt. Seaching for 'Qt threading' or looking at the QTcpSocket documentation should be a good start.

                            Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                            Visit the Qt Academy at https://academy.qt.io/catalog

                            1 Reply Last reply
                            1

                            • Login

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups
                            • Search
                            • Get Qt Extensions
                            • Unsolved