Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QSql database - unable to update data

QSql database - unable to update data

Scheduled Pinned Locked Moved Unsolved General and Desktop
15 Posts 5 Posters 4.9k 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.
  • M Offline
    M Offline
    MR_mn
    wrote on last edited by VRonin
    #1

    Hello,
    I'm working with Qt 5.9.2 on a project which involves building a database and working with it (displaying, editing, updating data, etc..). Right now I've created a ui which is supposed to take appropriate user input data and updating the relative columns in a database I've created, the only problem is that it displays the message the data haven't been saved, and the database hasn't been updated, and I can't understand why.
    Here is my .cpp file:

    //your code here
    #include "newequipment.h"
    #include "ui_newequipment.h"
    #include "secdialog.h"
    #include <QSql>
    #include <QSqlDatabase>
    #include <QSqlQuery>
    #include <QMessageBox>
    #include <QSqlError>
    
    NewEquipment::NewEquipment(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::NewEquipment)
    {
        ui->setupUi(this);
    }
    
    NewEquipment::~NewEquipment()
    {
        delete ui;
    }
    
    void NewEquipment::on_pushButton_Save_clicked()
    {
        NewEquipment conn;
        QString description, model, serial_number, manufacturer,
                year_of_manufacturing, current_eng_hours, sling_SN;
        description=ui->lineEdit_Description->text();
        model=ui->lineEdit_Model->text();
        serial_number=ui->lineEdit_SN->text();
        manufacturer=ui->lineEdit_Manufacturer->text();
        year_of_manufacturing=ui->lineEdit_Yearofmanuf->text();
        current_eng_hours=ui->lineEdit_Enghours->text();
        sling_SN=ui->lineEdit_SlingSN->text();
    
        if(!conn.connOpen()) {
            qDebug()<<"Connected...";
        return; }
    
        conn.connOpen();
        QSqlQuery qry;
        qry.prepare("insert into DB_unita (Description,Model,S/N,Manufacturer,Year of manufacturing,Current engine hours,Sling S/N) values ('"+description+"','"+model+"','"+serial_number+"','"+manufacturer+"', '"+year_of_manufacturing+"','"+ current_eng_hours+"','"+sling_SN+"')");
    
        if (qry.exec())
            {
            QMessageBox::information(this, "Saved!", "Saved data");
            conn.connClose();
            }
                     else {
                         QMessageBox::critical(this, tr("Error"),"Data not saved");
                         qDebug()<<qry.lastError().text();
                          }
    
    }
    

    Let me also say that this window which accepts user inputs is "called" from another window which displays the content of the database.
    Thanks for any advice on the matter!

    Regards,
    M.

    M VRoninV aha_1980A 3 Replies Last reply
    0
    • M MR_mn

      Hello,
      I'm working with Qt 5.9.2 on a project which involves building a database and working with it (displaying, editing, updating data, etc..). Right now I've created a ui which is supposed to take appropriate user input data and updating the relative columns in a database I've created, the only problem is that it displays the message the data haven't been saved, and the database hasn't been updated, and I can't understand why.
      Here is my .cpp file:

      //your code here
      #include "newequipment.h"
      #include "ui_newequipment.h"
      #include "secdialog.h"
      #include <QSql>
      #include <QSqlDatabase>
      #include <QSqlQuery>
      #include <QMessageBox>
      #include <QSqlError>
      
      NewEquipment::NewEquipment(QWidget *parent) :
          QDialog(parent),
          ui(new Ui::NewEquipment)
      {
          ui->setupUi(this);
      }
      
      NewEquipment::~NewEquipment()
      {
          delete ui;
      }
      
      void NewEquipment::on_pushButton_Save_clicked()
      {
          NewEquipment conn;
          QString description, model, serial_number, manufacturer,
                  year_of_manufacturing, current_eng_hours, sling_SN;
          description=ui->lineEdit_Description->text();
          model=ui->lineEdit_Model->text();
          serial_number=ui->lineEdit_SN->text();
          manufacturer=ui->lineEdit_Manufacturer->text();
          year_of_manufacturing=ui->lineEdit_Yearofmanuf->text();
          current_eng_hours=ui->lineEdit_Enghours->text();
          sling_SN=ui->lineEdit_SlingSN->text();
      
          if(!conn.connOpen()) {
              qDebug()<<"Connected...";
          return; }
      
          conn.connOpen();
          QSqlQuery qry;
          qry.prepare("insert into DB_unita (Description,Model,S/N,Manufacturer,Year of manufacturing,Current engine hours,Sling S/N) values ('"+description+"','"+model+"','"+serial_number+"','"+manufacturer+"', '"+year_of_manufacturing+"','"+ current_eng_hours+"','"+sling_SN+"')");
      
          if (qry.exec())
              {
              QMessageBox::information(this, "Saved!", "Saved data");
              conn.connClose();
              }
                       else {
                           QMessageBox::critical(this, tr("Error"),"Data not saved");
                           qDebug()<<qry.lastError().text();
                            }
      
      }
      

      Let me also say that this window which accepts user inputs is "called" from another window which displays the content of the database.
      Thanks for any advice on the matter!

      Regards,
      M.

      M Offline
      M Offline
      MR_mn
      wrote on last edited by
      #2

      Here is also the header file content:

      //#ifndef NEWEQUIPMENT_H
      #define NEWEQUIPMENT_H
      
      #include <QDialog>
      #include <QSqlDatabase>
      #include <QDebug>
      
      namespace Ui {
      class NewEquipment;
      }
      
      class NewEquipment : public QDialog
      {
          Q_OBJECT
      
      
          QSqlDatabase mydb;
      
          bool connOpen()
          {
          mydb = QSqlDatabase::addDatabase("QSQLITE");
          mydb.setDatabaseName("C:/ProgettiQT/GestioneManutenzione/Database_unita.db");
      
          if (!mydb.open()) { qDebug() << "Failed to connect to database"; }
          else { qDebug() << "Connected to database"; }
      
          }
      
          void connClose()
          {
          mydb.close();
          mydb.removeDatabase(QSqlDatabase::defaultConnection);
          }
      
      
      
      public:
          explicit NewEquipment(QWidget *parent = 0);
          ~NewEquipment();
      
      private slots:
          void on_pushButton_Save_clicked();
      
      private:
          Ui::NewEquipment *ui;
      };
      
      #endif // NEWEQUIPMENT_H
      
      

      Thanks!
      M.

      1 Reply Last reply
      0
      • M MR_mn

        Hello,
        I'm working with Qt 5.9.2 on a project which involves building a database and working with it (displaying, editing, updating data, etc..). Right now I've created a ui which is supposed to take appropriate user input data and updating the relative columns in a database I've created, the only problem is that it displays the message the data haven't been saved, and the database hasn't been updated, and I can't understand why.
        Here is my .cpp file:

        //your code here
        #include "newequipment.h"
        #include "ui_newequipment.h"
        #include "secdialog.h"
        #include <QSql>
        #include <QSqlDatabase>
        #include <QSqlQuery>
        #include <QMessageBox>
        #include <QSqlError>
        
        NewEquipment::NewEquipment(QWidget *parent) :
            QDialog(parent),
            ui(new Ui::NewEquipment)
        {
            ui->setupUi(this);
        }
        
        NewEquipment::~NewEquipment()
        {
            delete ui;
        }
        
        void NewEquipment::on_pushButton_Save_clicked()
        {
            NewEquipment conn;
            QString description, model, serial_number, manufacturer,
                    year_of_manufacturing, current_eng_hours, sling_SN;
            description=ui->lineEdit_Description->text();
            model=ui->lineEdit_Model->text();
            serial_number=ui->lineEdit_SN->text();
            manufacturer=ui->lineEdit_Manufacturer->text();
            year_of_manufacturing=ui->lineEdit_Yearofmanuf->text();
            current_eng_hours=ui->lineEdit_Enghours->text();
            sling_SN=ui->lineEdit_SlingSN->text();
        
            if(!conn.connOpen()) {
                qDebug()<<"Connected...";
            return; }
        
            conn.connOpen();
            QSqlQuery qry;
            qry.prepare("insert into DB_unita (Description,Model,S/N,Manufacturer,Year of manufacturing,Current engine hours,Sling S/N) values ('"+description+"','"+model+"','"+serial_number+"','"+manufacturer+"', '"+year_of_manufacturing+"','"+ current_eng_hours+"','"+sling_SN+"')");
        
            if (qry.exec())
                {
                QMessageBox::information(this, "Saved!", "Saved data");
                conn.connClose();
                }
                         else {
                             QMessageBox::critical(this, tr("Error"),"Data not saved");
                             qDebug()<<qry.lastError().text();
                              }
        
        }
        

        Let me also say that this window which accepts user inputs is "called" from another window which displays the content of the database.
        Thanks for any advice on the matter!

        Regards,
        M.

        VRoninV Offline
        VRoninV Offline
        VRonin
        wrote on last edited by
        #3
        • What does qDebug()<<qry.lastError().text(); print?
        • NewEquipment conn; why are you creating this object?
        • prevent SQL Injections using QSqlQuery::addBindValue

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        M 1 Reply Last reply
        2
        • M MR_mn

          Hello,
          I'm working with Qt 5.9.2 on a project which involves building a database and working with it (displaying, editing, updating data, etc..). Right now I've created a ui which is supposed to take appropriate user input data and updating the relative columns in a database I've created, the only problem is that it displays the message the data haven't been saved, and the database hasn't been updated, and I can't understand why.
          Here is my .cpp file:

          //your code here
          #include "newequipment.h"
          #include "ui_newequipment.h"
          #include "secdialog.h"
          #include <QSql>
          #include <QSqlDatabase>
          #include <QSqlQuery>
          #include <QMessageBox>
          #include <QSqlError>
          
          NewEquipment::NewEquipment(QWidget *parent) :
              QDialog(parent),
              ui(new Ui::NewEquipment)
          {
              ui->setupUi(this);
          }
          
          NewEquipment::~NewEquipment()
          {
              delete ui;
          }
          
          void NewEquipment::on_pushButton_Save_clicked()
          {
              NewEquipment conn;
              QString description, model, serial_number, manufacturer,
                      year_of_manufacturing, current_eng_hours, sling_SN;
              description=ui->lineEdit_Description->text();
              model=ui->lineEdit_Model->text();
              serial_number=ui->lineEdit_SN->text();
              manufacturer=ui->lineEdit_Manufacturer->text();
              year_of_manufacturing=ui->lineEdit_Yearofmanuf->text();
              current_eng_hours=ui->lineEdit_Enghours->text();
              sling_SN=ui->lineEdit_SlingSN->text();
          
              if(!conn.connOpen()) {
                  qDebug()<<"Connected...";
              return; }
          
              conn.connOpen();
              QSqlQuery qry;
              qry.prepare("insert into DB_unita (Description,Model,S/N,Manufacturer,Year of manufacturing,Current engine hours,Sling S/N) values ('"+description+"','"+model+"','"+serial_number+"','"+manufacturer+"', '"+year_of_manufacturing+"','"+ current_eng_hours+"','"+sling_SN+"')");
          
              if (qry.exec())
                  {
                  QMessageBox::information(this, "Saved!", "Saved data");
                  conn.connClose();
                  }
                           else {
                               QMessageBox::critical(this, tr("Error"),"Data not saved");
                               qDebug()<<qry.lastError().text();
                                }
          
          }
          

          Let me also say that this window which accepts user inputs is "called" from another window which displays the content of the database.
          Thanks for any advice on the matter!

          Regards,
          M.

          aha_1980A Offline
          aha_1980A Offline
          aha_1980
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @MR_mn said in QSql database - unable to update data:

          qry.prepare("insert into DB_unita (Description,Model,S/N,Manufacturer,Year of manufacturing,Current engine hours,Sling S/N) values ('"+description+"','"+model+"','"+serial_number+"','"+manufacturer+"', '"+year_of_manufacturing+"','"+ current_eng_hours+"','"+sling_SN+"')");

          I'm no database expert, but I have nevertheless some hints for you:

          1. Your column names contain spaces. Either avoid them or properly quote them.
          2. I'd store the query in a string and print it with qDebug() before passing to qry.prepare(). That may give you a hint if the query looks like you expect.
          3. Maybe silly question, but do you have write access to the table you want to change?

          Qt has to stay free or it will die.

          1 Reply Last reply
          2
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #5

            Hi,

            You are calling conn.connOpen twice, why ?

            On a side note, as already written in numerous threads these past few months: don't store local QSqlDatabase objects. The reasons are explained in the QSqlDatabase details.

            As a follow up question, why are re-opening that database again and again ?

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            2
            • VRoninV VRonin
              • What does qDebug()<<qry.lastError().text(); print?
              • NewEquipment conn; why are you creating this object?
              • prevent SQL Injections using QSqlQuery::addBindValue
              M Offline
              M Offline
              MR_mn
              wrote on last edited by
              #6

              @VRonin
              This is what I get from the qDebug:
              Connected to database
              QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
              QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
              Connected to database
              "No query Unable to fetch row"

              I'm creating that object to be able to be able to execute the connOpen and connClose functions.

              I will try to use the addBindValue and see if I can solve.

              I will come back later with the result.

              Thanks
              M.

              VRoninV 1 Reply Last reply
              0
              • M MR_mn

                @VRonin
                This is what I get from the qDebug:
                Connected to database
                QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
                QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
                Connected to database
                "No query Unable to fetch row"

                I'm creating that object to be able to be able to execute the connOpen and connClose functions.

                I will try to use the addBindValue and see if I can solve.

                I will come back later with the result.

                Thanks
                M.

                VRoninV Offline
                VRoninV Offline
                VRonin
                wrote on last edited by
                #7

                @MR_mn said in QSql database - unable to update data:

                I'm creating that object to be able to be able to execute the connOpen and connClose functions.

                You don't need it, you can just call this->connOpen()

                "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                ~Napoleon Bonaparte

                On a crusade to banish setIndexWidget() from the holy land of Qt

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  MR_mn
                  wrote on last edited by
                  #8

                  I tried to play a little bit with my code following your suggestions, now qDebug output is:
                  Connected to database
                  "near "/": syntax error Unable to execute statement"
                  " Parameter count mismatch"

                  Here is new code:

                  //#include "newequipment.h"
                  #include "ui_newequipment.h"
                  #include "secdialog.h"
                  #include <QSql>
                  #include <QSqlDatabase>
                  #include <QSqlQuery>
                  #include <QMessageBox>
                  #include <QSqlError>
                  
                  NewEquipment::NewEquipment(QWidget *parent) :
                      QDialog(parent),
                      ui(new Ui::NewEquipment)
                  {
                      ui->setupUi(this);
                  }
                  
                  NewEquipment::~NewEquipment()
                  {
                      delete ui;
                  }
                  
                  void NewEquipment::on_pushButton_Save_clicked()
                  {
                  
                  
                      QString description, model, serial_number, manufacturer,
                              year_of_manufacturing, current_eng_hours, sling_SN;
                      description=ui->lineEdit_Description->text();
                      model=ui->lineEdit_Model->text();
                      serial_number=ui->lineEdit_SN->text();
                      manufacturer=ui->lineEdit_Manufacturer->text();
                      year_of_manufacturing=ui->lineEdit_Yearofmanuf->text();
                      current_eng_hours=ui->lineEdit_Enghours->text();
                      sling_SN=ui->lineEdit_SlingSN->text();
                  
                  
                  
                      QSqlQuery qry;
                      qry.prepare("INSERT INTO unita (Description,Model,S/N,Manufacturer,Year,Currentenginehours,SlingS/N) values (?, ?, ?, ?, ?, ?, ?)");
                  
                      qry.addBindValue(description);
                      qry.addBindValue(model);
                      qry.addBindValue(serial_number);
                      qry.addBindValue(manufacturer);
                      qry.addBindValue(year_of_manufacturing);
                      qry.addBindValue(current_eng_hours);
                      qry.addBindValue(sling_SN);
                  
                      qDebug()<<qry.lastError().text();
                  
                      qry.exec();
                  
                      if (qry.exec())
                          {
                          QMessageBox::information(this, "Saved!", "Saved data");
                          this->connClose();
                          }
                                   else {
                                       QMessageBox::critical(this, tr("Error"),"Data not saved");
                                       qDebug()<<qry.lastError().text();
                  
                                        }
                  
                  }
                  
                  

                  Here is the header file.

                  #ifndef NEWEQUIPMENT_H
                  #define NEWEQUIPMENT_H
                  
                  #include <QDialog>
                  #include <QSqlDatabase>
                  #include <QDebug>
                  
                  namespace Ui {
                  class NewEquipment;
                  }
                  
                  class NewEquipment : public QDialog
                  {
                      Q_OBJECT
                  
                  private:
                  
                      QSqlDatabase mydb;
                  
                      void connOpen()
                      {
                      mydb.addDatabase("QSQLITE");
                      mydb.setDatabaseName("C:/ProgettiQT/GestioneManutenzione/Database_unita.db");
                  
                      if (!mydb.open()) { qDebug() << "Failed to connect to database"; }
                      else { qDebug() << "Connected to database"; }
                  
                      }
                  
                      void connClose()
                      {
                      mydb.close();
                      mydb.removeDatabase(QSqlDatabase::defaultConnection);
                      }
                  
                  
                  
                  public:
                      explicit NewEquipment(QWidget *parent = 0);
                      ~NewEquipment();
                  
                  private slots:
                      void on_pushButton_Save_clicked();
                  
                  private:
                      Ui::NewEquipment *ui;
                  };
                  
                  #endif // NEWEQUIPMENT_H
                  
                  

                  Thanks for any advice!
                  M.

                  aha_1980A 1 Reply Last reply
                  0
                  • M MR_mn

                    I tried to play a little bit with my code following your suggestions, now qDebug output is:
                    Connected to database
                    "near "/": syntax error Unable to execute statement"
                    " Parameter count mismatch"

                    Here is new code:

                    //#include "newequipment.h"
                    #include "ui_newequipment.h"
                    #include "secdialog.h"
                    #include <QSql>
                    #include <QSqlDatabase>
                    #include <QSqlQuery>
                    #include <QMessageBox>
                    #include <QSqlError>
                    
                    NewEquipment::NewEquipment(QWidget *parent) :
                        QDialog(parent),
                        ui(new Ui::NewEquipment)
                    {
                        ui->setupUi(this);
                    }
                    
                    NewEquipment::~NewEquipment()
                    {
                        delete ui;
                    }
                    
                    void NewEquipment::on_pushButton_Save_clicked()
                    {
                    
                    
                        QString description, model, serial_number, manufacturer,
                                year_of_manufacturing, current_eng_hours, sling_SN;
                        description=ui->lineEdit_Description->text();
                        model=ui->lineEdit_Model->text();
                        serial_number=ui->lineEdit_SN->text();
                        manufacturer=ui->lineEdit_Manufacturer->text();
                        year_of_manufacturing=ui->lineEdit_Yearofmanuf->text();
                        current_eng_hours=ui->lineEdit_Enghours->text();
                        sling_SN=ui->lineEdit_SlingSN->text();
                    
                    
                    
                        QSqlQuery qry;
                        qry.prepare("INSERT INTO unita (Description,Model,S/N,Manufacturer,Year,Currentenginehours,SlingS/N) values (?, ?, ?, ?, ?, ?, ?)");
                    
                        qry.addBindValue(description);
                        qry.addBindValue(model);
                        qry.addBindValue(serial_number);
                        qry.addBindValue(manufacturer);
                        qry.addBindValue(year_of_manufacturing);
                        qry.addBindValue(current_eng_hours);
                        qry.addBindValue(sling_SN);
                    
                        qDebug()<<qry.lastError().text();
                    
                        qry.exec();
                    
                        if (qry.exec())
                            {
                            QMessageBox::information(this, "Saved!", "Saved data");
                            this->connClose();
                            }
                                     else {
                                         QMessageBox::critical(this, tr("Error"),"Data not saved");
                                         qDebug()<<qry.lastError().text();
                    
                                          }
                    
                    }
                    
                    

                    Here is the header file.

                    #ifndef NEWEQUIPMENT_H
                    #define NEWEQUIPMENT_H
                    
                    #include <QDialog>
                    #include <QSqlDatabase>
                    #include <QDebug>
                    
                    namespace Ui {
                    class NewEquipment;
                    }
                    
                    class NewEquipment : public QDialog
                    {
                        Q_OBJECT
                    
                    private:
                    
                        QSqlDatabase mydb;
                    
                        void connOpen()
                        {
                        mydb.addDatabase("QSQLITE");
                        mydb.setDatabaseName("C:/ProgettiQT/GestioneManutenzione/Database_unita.db");
                    
                        if (!mydb.open()) { qDebug() << "Failed to connect to database"; }
                        else { qDebug() << "Connected to database"; }
                    
                        }
                    
                        void connClose()
                        {
                        mydb.close();
                        mydb.removeDatabase(QSqlDatabase::defaultConnection);
                        }
                    
                    
                    
                    public:
                        explicit NewEquipment(QWidget *parent = 0);
                        ~NewEquipment();
                    
                    private slots:
                        void on_pushButton_Save_clicked();
                    
                    private:
                        Ui::NewEquipment *ui;
                    };
                    
                    #endif // NEWEQUIPMENT_H
                    
                    

                    Thanks for any advice!
                    M.

                    aha_1980A Offline
                    aha_1980A Offline
                    aha_1980
                    Lifetime Qt Champion
                    wrote on last edited by aha_1980
                    #9

                    Hi @MR_mn :

                    qry.prepare("INSERT INTO unita (Description,Model,S/N,Manufacturer,Year,Currentenginehours,SlingS/N) values (?, ?, ?, ?, ?, ?, ?)");

                    Your database columns "S/N" and "SlingS/N" contains slashes (/) and I guess that's driving the SQL engine crazy.

                    Take care with spaces and special chars. Most often, ASCII chars (a-z, A-Z 0-9) is allowed, often also the underscore (_), sometimes also the minus sign (-). All other characters can be dangerous when using text based "command" or programming languages.

                    I started my computer experience with MS-DOS, where file names were limited to 8 characters and most special chars were forbidden; so I'm used to such limitations.

                    Qt has to stay free or it will die.

                    M 1 Reply Last reply
                    3
                    • aha_1980A aha_1980

                      Hi @MR_mn :

                      qry.prepare("INSERT INTO unita (Description,Model,S/N,Manufacturer,Year,Currentenginehours,SlingS/N) values (?, ?, ?, ?, ?, ?, ?)");

                      Your database columns "S/N" and "SlingS/N" contains slashes (/) and I guess that's driving the SQL engine crazy.

                      Take care with spaces and special chars. Most often, ASCII chars (a-z, A-Z 0-9) is allowed, often also the underscore (_), sometimes also the minus sign (-). All other characters can be dangerous when using text based "command" or programming languages.

                      I started my computer experience with MS-DOS, where file names were limited to 8 characters and most special chars were forbidden; so I'm used to such limitations.

                      M Offline
                      M Offline
                      MR_mn
                      wrote on last edited by
                      #10

                      Hi @aha_1980 , thanks for your advice, I changed something into the database and now I managed to have the program work, I guess the problem was with my database.

                      Now the strange thing is that whenever I insert new data, instead of having just one new row, I have two, and the data inside are the same. Any hint on this?

                      Thanks
                      M.

                      JonBJ 1 Reply Last reply
                      0
                      • M MR_mn

                        Hi @aha_1980 , thanks for your advice, I changed something into the database and now I managed to have the program work, I guess the problem was with my database.

                        Now the strange thing is that whenever I insert new data, instead of having just one new row, I have two, and the data inside are the same. Any hint on this?

                        Thanks
                        M.

                        JonBJ Offline
                        JonBJ Offline
                        JonB
                        wrote on last edited by
                        #11

                        @MR_mn
                        That would be if you execute the INSERT twice, wouldn't it. And that's because you have 2 qry.exec() statements....

                        M 1 Reply Last reply
                        1
                        • JonBJ JonB

                          @MR_mn
                          That would be if you execute the INSERT twice, wouldn't it. And that's because you have 2 qry.exec() statements....

                          M Offline
                          M Offline
                          MR_mn
                          wrote on last edited by
                          #12

                          @JonB I thought my problem was related to what you pointed out, but actually I don't see the second query.exec() statement, where is it? I tried to take off the bindValue part, but I'm still getting the same problem.

                          Thanks
                          M.

                          JonBJ 1 Reply Last reply
                          0
                          • M MR_mn

                            @JonB I thought my problem was related to what you pointed out, but actually I don't see the second query.exec() statement, where is it? I tried to take off the bindValue part, but I'm still getting the same problem.

                            Thanks
                            M.

                            JonBJ Offline
                            JonBJ Offline
                            JonB
                            wrote on last edited by
                            #13

                            @MR_mn
                            Assuming your code is as you have posted above --- if it isn't, all bets are off, till you post the actual code you're currently using --- search it for the string qry.exec if you want to know where you have written qry.exec....

                            1 Reply Last reply
                            2
                            • SGaistS Offline
                              SGaistS Offline
                              SGaist
                              Lifetime Qt Champion
                              wrote on last edited by
                              #14

                              Hi,

                              From your code:

                              qDebug()<<qry.lastError().text();
                              
                                  qry.exec(); << First call
                              
                                  if (qry.exec()) << Second call
                              

                              Interested in AI ? www.idiap.ch
                              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                              JonBJ 1 Reply Last reply
                              1
                              • SGaistS SGaist

                                Hi,

                                From your code:

                                qDebug()<<qry.lastError().text();
                                
                                    qry.exec(); << First call
                                
                                    if (qry.exec()) << Second call
                                
                                JonBJ Offline
                                JonBJ Offline
                                JonB
                                wrote on last edited by
                                #15

                                @SGaist
                                You are too soft! ;-)

                                1 Reply Last reply
                                0

                                • Login

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