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.
Forum Updated to NodeBB v4.3 + New Features

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.8k Views 1 Watching
  • 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.
  • 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