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. Error executing query: "Driver not loaded" - Need Assistance
Forum Updated to NodeBB v4.3 + New Features

Error executing query: "Driver not loaded" - Need Assistance

Scheduled Pinned Locked Moved Solved General and Desktop
11 Posts 4 Posters 1.1k 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.
  • E eclispe

    Hello Qt community,

    I hope this message finds you well. I'm currently facing an issue while executing a query, and I'm seeking guidance to resolve it. I appreciate your expertise and any assistance you can provide.

    • Error Details:
      I'm currently facing an issue where I can insert data into my database successfully, but encountering difficulties when trying to read or retrieve data .
      I encountered the following error message: "Error executing query: Driver not loaded."

    • Database Type: Oracle

    • Database Connection Driver: QODBC

    • Programming Language: c++

    This is my connection function :

    bool connexion::connect(){
    bool test=false;
         QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
         db.setDatabaseName("ProjectDataBase");
         db.setUserName("eclipse");
         db.setPassword("eclipse");
    
         if (db.open())
         {
             test=true;
         }
    
     return  test ;
    }
    

    This is my insert and display funtions :

    /*DISPLAY*/
    QSqlQueryModel * client::display_all_clients(){
        QSqlQueryModel *model = new QSqlQueryModel;
        model->setQuery("SELECT * FROM CLIENTS");
        if (model->lastError().isValid()) {
            qDebug() << "Error executing query:" << model->lastError().text();
        }
        model->setHeaderData(0, Qt::Horizontal, QObject::tr("IDENTIFIANT"));
        model->setHeaderData(1, Qt::Horizontal, QObject::tr("FIRST NAME"));
        model->setHeaderData(2, Qt::Horizontal, QObject::tr("NAME"));
        model->setHeaderData(3, Qt::Horizontal, QObject::tr("DATE OF BIRTH"));
        return model ;
    }
    /*ADD*/
    bool client::add_client() {
        QSqlQuery query;
        query.prepare("INSERT INTO CLIENTS (CIN, FIRSTNAME, NAME, DOB) "
                      "VALUES (?, ?, ?, ?)");
        query.bindValue(0, cin);
        query.bindValue(1, firstName);
        query.bindValue(2, name);
        query.bindValue(3, dob);
        return query.exec();
    }
    

    Thank you in advance for your time and assistance.

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

    @eclispe
    The only was you should be able to get "Driver not loaded" is if you call your setQuery() without having previously done the addDatabase("QODBC") in the same session.

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

      Hi and welcome to devnet,

      In addition to @JonB, you don't do anything if the database fails to open. You should at least print the error message.

      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
      0
      • E Offline
        E Offline
        eclispe
        wrote on last edited by
        #4

        @JonB @SGaist I apologize for the lack of information in the post .
        this is my main.cpp :

        #include "mainwindow.h"
        #include "connexion.h"
        #include <QApplication>
        #include <QMessageBox>
        int main(int argc, char *argv[])
        {
            QApplication a(argc, argv);
            MainWindow w;
               connexion c;
               bool test=c.connect();
               if(test)
               {w.show();
                   QMessageBox::information(nullptr, QObject::tr("database is open"),
                               QObject::tr("connection successful.\n"
                                           "Click Cancel to exit."), QMessageBox::Cancel);
        
           }
               else
                   QMessageBox::critical(nullptr, QObject::tr("database is not open"),
                               QObject::tr("connection failed.\n"
                                           "Click Cancel to exit."), QMessageBox::Cancel);
        
            return a.exec();
        }
        
        

        and this is the result :
        data_base_is_open.png
        40ace7f8-78b1-4a64-af94-051846376560-image.png

        Christian EhrlicherC 1 Reply Last reply
        0
        • E eclispe

          @JonB @SGaist I apologize for the lack of information in the post .
          this is my main.cpp :

          #include "mainwindow.h"
          #include "connexion.h"
          #include <QApplication>
          #include <QMessageBox>
          int main(int argc, char *argv[])
          {
              QApplication a(argc, argv);
              MainWindow w;
                 connexion c;
                 bool test=c.connect();
                 if(test)
                 {w.show();
                     QMessageBox::information(nullptr, QObject::tr("database is open"),
                                 QObject::tr("connection successful.\n"
                                             "Click Cancel to exit."), QMessageBox::Cancel);
          
             }
                 else
                     QMessageBox::critical(nullptr, QObject::tr("database is not open"),
                                 QObject::tr("connection failed.\n"
                                             "Click Cancel to exit."), QMessageBox::Cancel);
          
              return a.exec();
          }
          
          

          and this is the result :
          data_base_is_open.png
          40ace7f8-78b1-4a64-af94-051846376560-image.png

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

          And from where do you call the select? From the mainwindow ctor?

          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
          • E eclispe

            Hello Qt community,

            I hope this message finds you well. I'm currently facing an issue while executing a query, and I'm seeking guidance to resolve it. I appreciate your expertise and any assistance you can provide.

            • Error Details:
              I'm currently facing an issue where I can insert data into my database successfully, but encountering difficulties when trying to read or retrieve data .
              I encountered the following error message: "Error executing query: Driver not loaded."

            • Database Type: Oracle

            • Database Connection Driver: QODBC

            • Programming Language: c++

            This is my connection function :

            bool connexion::connect(){
            bool test=false;
                 QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
                 db.setDatabaseName("ProjectDataBase");
                 db.setUserName("eclipse");
                 db.setPassword("eclipse");
            
                 if (db.open())
                 {
                     test=true;
                 }
            
             return  test ;
            }
            

            This is my insert and display funtions :

            /*DISPLAY*/
            QSqlQueryModel * client::display_all_clients(){
                QSqlQueryModel *model = new QSqlQueryModel;
                model->setQuery("SELECT * FROM CLIENTS");
                if (model->lastError().isValid()) {
                    qDebug() << "Error executing query:" << model->lastError().text();
                }
                model->setHeaderData(0, Qt::Horizontal, QObject::tr("IDENTIFIANT"));
                model->setHeaderData(1, Qt::Horizontal, QObject::tr("FIRST NAME"));
                model->setHeaderData(2, Qt::Horizontal, QObject::tr("NAME"));
                model->setHeaderData(3, Qt::Horizontal, QObject::tr("DATE OF BIRTH"));
                return model ;
            }
            /*ADD*/
            bool client::add_client() {
                QSqlQuery query;
                query.prepare("INSERT INTO CLIENTS (CIN, FIRSTNAME, NAME, DOB) "
                              "VALUES (?, ?, ?, ?)");
                query.bindValue(0, cin);
                query.bindValue(1, firstName);
                query.bindValue(2, name);
                query.bindValue(3, dob);
                return query.exec();
            }
            

            Thank you in advance for your time and assistance.

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

            @eclispe said in Error executing query: "Driver not loaded" - Need Assistance:

            I'm currently facing an issue where I can insert data into my database successfully, but encountering difficulties when trying to read or retrieve data .

            I do not believe this. I do not believe an INSERT works but a SELECT does not.

            As @Christian-Ehrlicher says. Please provide an actual complete minimal example of your code, not snippets.

            1 Reply Last reply
            0
            • E Offline
              E Offline
              eclispe
              wrote on last edited by
              #7

              All right @Christian-Ehrlicher @JonB , here is my complete code :

              • headers :

              connexion.h :

              #ifndef CONNEXION_H
              #define CONNEXION_H
              #include <QSqlDatabase>
              #include <QSqlError>
              #include <QSqlQuery>
              class connexion
              {
              public:
                  connexion();
                  bool connect();
              };
              
              #endif // CONNEXION_H
              

              client .h :

              #ifndef CLIENT_H
              #define CLIENT_H
              #include<QString>
              #include<QSqlQuery>
              #include<QSqlQueryModel>
              #include<QDebug>
              #include<QObject>
              #include "connexion.h"
              class client 
              {
              private :
                 int cin  ;
                 QString name ;
                 QString firstName ;
                 QString dob ;
              public:
               /*constructor*/
              client();
              client(int , QString ,QString ,QString);
              /* getters */
              int getCin();
              QString getName();
              QString getFirstName();
              QString getDateOfBirth();
              /* setters */
              void setCin(int cin);
              void setName(QString name);
              void setFirstName(QString firstName);
              void setDateOfBirth(QString dob);
              /* CRUD */
              QSqlQueryModel * display_all_clients();
              bool add_client();
              bool delete_client(int cin);
              bool update_client();
              };
              
              #endif // CLIENT_H
              
              

              mainwindow.h :

              #ifndef MAINWINDOW_H
              #define MAINWINDOW_H
              #include <QMainWindow>
              #include <QStackedWidget>
              #include <QPushButton>
              #include <QTableWidget>
              #include <QApplication>
              #include <QMessageBox>
              #include <iostream>
              #include"client.h"
              #include "connexion.h"
              QT_BEGIN_NAMESPACE
              namespace Ui {
              class MainWindow;
              }
              QT_END_NAMESPACE
              
              class MainWindow : public QMainWindow
              {
                  Q_OBJECT
              
              public:
                  MainWindow(QWidget *parent = nullptr);
                  ~MainWindow();
              private slots:
                  void on_employees_clicked();
              
                  void on_clients_clicked();
              
                  void on_stock_clicked();
              
                  void on_settings_clicked();
              
                  void on_about_us_clicked();
              
                  void on_home_clicked();
              
                  void on_home_2_clicked();
              
                  void on_employees_2_clicked();
              
                  void on_clients_2_clicked();
              
                  void on_stock_2_clicked();
              
                  void on_settings_2_clicked();
              
                  void on_about_us_2_clicked();
              
                  void on_home_3_clicked();
              
                  void on_employees_3_clicked();
              
                  void on_clients_3_clicked();
              
                  void on_stock_3_clicked();
              
                  void on_settings_3_clicked();
              
                  void on_about_us_3_clicked();
                  void on_home_4_clicked();
              
                  void on_employees_4_clicked();
              
                  void on_clients_4_clicked();
              
                  void on_stock_4_clicked();
              
                  void on_settings_4_clicked();
              
                  void on_about_us_4_clicked();
                  void on_home_5_clicked();
              
                  void on_employees_5_clicked();
              
                  void on_clients_5_clicked();
              
                  void on_stock_5_clicked();
              
                  void on_settings_5_clicked();
              
                  void on_about_us_5_clicked();
                  void on_home_6_clicked();
              
                  void on_employees_6_clicked();
              
                  void on_clients_6_clicked();
              
                  void on_stock_6_clicked();
              
                  void on_settings_6_clicked();
              
                  void on_about_us_6_clicked();
              
                  void on_list_op_clicked();
              
                  void on_add_op_clicked();
              
                  void on_up_op_clicked();
              
                  void on_del_op_clicked();
              
                  void on_list_op_1_clicked();
              
                  void on_add_op_1_clicked();
              
                  void on_up_op_1_clicked();
              
                  void on_del_op_1_clicked();
                  void on_list_op_2_clicked();
              
                  void on_add_op_2_clicked();
              
                  void on_up_op_2_clicked();
              
                  void on_del_op_2_clicked();
                  void on_list_op_3_clicked();
              
                  void on_add_op_3_clicked();
              
                  void on_up_op_3_clicked();
              
                  void on_del_op_3_clicked();
                  void on_add_val_clicked();
              
              private:
                  Ui::MainWindow *ui;
                  client myclient;
              };
              #endif // MAINWINDOW_H
              
              
              • sources :

              connexion.cpp :

              #include "connexion.h"
              
              connexion::connexion()
              {
              
              }
              bool connexion::connect(){
              bool test=false;
                   QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
                   db.setDatabaseName("ProjectDataBase");
                   db.setUserName("eclipse");
                   db.setPassword("eclipse");
              
                   if (db.open())
                   {
                       test=true;
                   }
              
               return  test ;
              }
              

              client.cpp :

              #include "client.h"
              // parameterized constructor
              client::client(int cin , QString name , QString firstName , QString dob)
              {
                  this->cin = cin;
                  this->name = name;
                  this->firstName = firstName ;
                  this->dob = dob ;
              }
              //default constructor
              client::client()
              {
                  cin = 0;
                  name = "";
                  firstName = "";
                  dob = "";
              }
              
              /* definition of getters */
              
              int client::getCin(){
                  return cin;
              }
              QString client::getName(){
                  return name;
              }
              QString client::getFirstName(){
                  return firstName;
              }
              QString client::getDateOfBirth(){
                  return dob;
              }
              /* definition of setters */
              
              void client::setCin(int cin){
                  this->cin = cin ;
              }
              void client::setName(QString name){
                  this->name = name  ;
              }
              void client::setFirstName(QString firstName){
                  this->firstName = firstName  ;
              }
              void client::setDateOfBirth(QString dob){
                  this->dob = dob ;
              }
              /* definition of CRUD */
              /*DISPLAY*/
              QSqlQueryModel * client::display_all_clients(){
                  QSqlQueryModel *model = new QSqlQueryModel;
                  model->setQuery("SELECT * FROM CLIENTS");
                  if (model->lastError().isValid()) {
                      qDebug() << "Error executing query:" << model->lastError().text();
                  }
                  model->setHeaderData(0, Qt::Horizontal, QObject::tr("IDENTIFIANT"));
                  model->setHeaderData(1, Qt::Horizontal, QObject::tr("FIRST NAME"));
                  model->setHeaderData(2, Qt::Horizontal, QObject::tr("NAME"));
                  model->setHeaderData(3, Qt::Horizontal, QObject::tr("DATE OF BIRTH"));
                  return model ;
              }
              /*ADD*/
              bool client::add_client() {
                  QSqlQuery query;
                  query.prepare("INSERT INTO CLIENTS (CIN, FIRSTNAME, NAME, DOB) "
                                "VALUES (?, ?, ?, ?)");
                  query.bindValue(0, cin);
                  query.bindValue(1, firstName);
                  query.bindValue(2, name);
                  query.bindValue(3, dob);
                  return query.exec();
              }
              
              /*DELETE*/
              bool client::delete_client(int cin) {
                  QSqlQuery query;
                  query.prepare("DELETE FROM CLIENTS WHERE CIN = ?");
                  query.bindValue(0, cin);
                  return query.exec();
              }
              

              mainwindow.cpp :

              #include "mainwindow.h"
              #include "./ui_mainwindow.h"
              #include "client.h"
              MainWindow::MainWindow(QWidget *parent)
                  : QMainWindow(parent)
                  , ui(new Ui::MainWindow)
              {
              
                  ui->setupUi(this);
                  ui->stackedWidget->setCurrentWidget(ui->home_page);
                  qDebug() << QSqlDatabase::drivers();
                  /*display clients opration*/
                  ui->clients_table->setModel(myclient.display_all_clients());
                  /*end of display clients opration*/
              }
              
              MainWindow::~MainWindow()
              {
                  delete ui;
              }
              /* insert client button*/
              void MainWindow::on_add_val_clicked()
              {
                  int cin = ui->cin_in->text().toInt();
                  QString name = ui->name_in->text();
                  QString firstName = ui->firstname_in->text();
                  QString dob = ui->dob_in->text();
                  client myClient(cin,name,firstName,dob);
                  bool operation_result = myClient.add_client();
                  if(operation_result == true){
                      std::cout << "insert done" << std::endl;
                  }
                  else{
                      std::cout << "insert not done" << std::endl;
                  }
              }
              /* endof insert client button*/
              /*navigation bar operations*/
              /*home page nav*/
              
              void MainWindow::on_home_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->home_page);
              }
              void MainWindow::on_employees_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->employees_page);
              }
              void MainWindow::on_clients_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->clients_page);
              }
              void MainWindow::on_stock_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->stock_page);
              }
              void MainWindow::on_settings_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->settings_page);
              }
              void MainWindow::on_about_us_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->about_us_page);
              }
              
              /*employees page nav*/
              
              void MainWindow::on_home_2_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->home_page);
              }
              void MainWindow::on_employees_2_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->employees_page);
              }
              void MainWindow::on_clients_2_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->clients_page);
              }
              void MainWindow::on_stock_2_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->stock_page);
              }
              void MainWindow::on_settings_2_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->settings_page);
              }
              void MainWindow::on_about_us_2_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->about_us_page);
              }
              /* employer operations*/
              /*list page*/
              void MainWindow::on_list_op_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->list);
              }
              
              void MainWindow::on_add_op_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->add);
              }
              
              void MainWindow::on_up_op_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->update);
              }
              
              void MainWindow::on_del_op_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->delet);
              }
              /*add page*/
              void MainWindow::on_list_op_1_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->list);
              }
              
              void MainWindow::on_add_op_1_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->add);
              }
              
              void MainWindow::on_up_op_1_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->update);
              }
              
              void MainWindow::on_del_op_1_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->delet);
              }
              /*update page*/
              
              void MainWindow::on_list_op_2_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->list);
              }
              
              void MainWindow::on_add_op_2_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->add);
              }
              
              void MainWindow::on_up_op_2_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->update);
              }
              
              void MainWindow::on_del_op_2_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->delet);
              }
              /*delete page*/
              void MainWindow::on_list_op_3_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->list);
              }
              
              void MainWindow::on_add_op_3_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->add);
              }
              
              void MainWindow::on_up_op_3_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->update);
              }
              
              void MainWindow::on_del_op_3_clicked()
              {
                  ui->employees_operations->setCurrentWidget(ui->delet);
              }
              /*clients page nav*/
              
              void MainWindow::on_home_3_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->home_page);
              }
              void MainWindow::on_employees_3_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->employees_page);
              }
              void MainWindow::on_clients_3_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->clients_page);
              }
              void MainWindow::on_stock_3_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->stock_page);
              }
              void MainWindow::on_settings_3_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->settings_page);
              }
              void MainWindow::on_about_us_3_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->about_us_page);
              }
              /*stock page nav*/
              
              void MainWindow::on_home_4_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->home_page);
              }
              void MainWindow::on_employees_4_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->employees_page);
              }
              void MainWindow::on_clients_4_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->clients_page);
              }
              void MainWindow::on_stock_4_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->stock_page);
              }
              void MainWindow::on_settings_4_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->settings_page);
              }
              void MainWindow::on_about_us_4_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->about_us_page);
              }
              /*abouts us page nav*/
              
              void MainWindow::on_home_5_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->home_page);
              }
              void MainWindow::on_employees_5_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->employees_page);
              }
              void MainWindow::on_clients_5_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->clients_page);
              }
              void MainWindow::on_stock_5_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->stock_page);
              }
              void MainWindow::on_settings_5_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->settings_page);
              }
              void MainWindow::on_about_us_5_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->about_us_page);
              }
              /*employees page nav*/
              
              void MainWindow::on_home_6_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->home_page);
              }
              void MainWindow::on_employees_6_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->employees_page);
              }
              void MainWindow::on_clients_6_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->clients_page);
              }
              void MainWindow::on_stock_6_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->stock_page);
              }
              void MainWindow::on_settings_6_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->settings_page);
              }
              void MainWindow::on_about_us_6_clicked()
              {
                  ui->stackedWidget->setCurrentWidget(ui->about_us_page);
              }
              

              main.cpp

              #include "mainwindow.h"
              #include "connexion.h"
              int main(int argc, char *argv[])
              {
                  QApplication a(argc, argv);
                  MainWindow w;
                     connexion c;
                     bool test=c.connect();
                     if(test)
                     {w.show();
                         QMessageBox::information(nullptr, QObject::tr("database is open"),
                                     QObject::tr("connection successful.\n"
                                                 "Click Cancel to exit."), QMessageBox::Cancel);
              
                 }
                     else
                         QMessageBox::critical(nullptr, QObject::tr("database is not open"),
                                     QObject::tr("connection failed.\n"
                                                 "Click Cancel to exit."), QMessageBox::Cancel);
              
                  return a.exec();
              }
              

              1aebad83-e81d-41b5-ac8c-931029730147-image.png
              ea6d26a8-3579-468a-94d7-bb9cd23049f0-image.png

              Christian EhrlicherC 1 Reply Last reply
              0
              • E eclispe

                All right @Christian-Ehrlicher @JonB , here is my complete code :

                • headers :

                connexion.h :

                #ifndef CONNEXION_H
                #define CONNEXION_H
                #include <QSqlDatabase>
                #include <QSqlError>
                #include <QSqlQuery>
                class connexion
                {
                public:
                    connexion();
                    bool connect();
                };
                
                #endif // CONNEXION_H
                

                client .h :

                #ifndef CLIENT_H
                #define CLIENT_H
                #include<QString>
                #include<QSqlQuery>
                #include<QSqlQueryModel>
                #include<QDebug>
                #include<QObject>
                #include "connexion.h"
                class client 
                {
                private :
                   int cin  ;
                   QString name ;
                   QString firstName ;
                   QString dob ;
                public:
                 /*constructor*/
                client();
                client(int , QString ,QString ,QString);
                /* getters */
                int getCin();
                QString getName();
                QString getFirstName();
                QString getDateOfBirth();
                /* setters */
                void setCin(int cin);
                void setName(QString name);
                void setFirstName(QString firstName);
                void setDateOfBirth(QString dob);
                /* CRUD */
                QSqlQueryModel * display_all_clients();
                bool add_client();
                bool delete_client(int cin);
                bool update_client();
                };
                
                #endif // CLIENT_H
                
                

                mainwindow.h :

                #ifndef MAINWINDOW_H
                #define MAINWINDOW_H
                #include <QMainWindow>
                #include <QStackedWidget>
                #include <QPushButton>
                #include <QTableWidget>
                #include <QApplication>
                #include <QMessageBox>
                #include <iostream>
                #include"client.h"
                #include "connexion.h"
                QT_BEGIN_NAMESPACE
                namespace Ui {
                class MainWindow;
                }
                QT_END_NAMESPACE
                
                class MainWindow : public QMainWindow
                {
                    Q_OBJECT
                
                public:
                    MainWindow(QWidget *parent = nullptr);
                    ~MainWindow();
                private slots:
                    void on_employees_clicked();
                
                    void on_clients_clicked();
                
                    void on_stock_clicked();
                
                    void on_settings_clicked();
                
                    void on_about_us_clicked();
                
                    void on_home_clicked();
                
                    void on_home_2_clicked();
                
                    void on_employees_2_clicked();
                
                    void on_clients_2_clicked();
                
                    void on_stock_2_clicked();
                
                    void on_settings_2_clicked();
                
                    void on_about_us_2_clicked();
                
                    void on_home_3_clicked();
                
                    void on_employees_3_clicked();
                
                    void on_clients_3_clicked();
                
                    void on_stock_3_clicked();
                
                    void on_settings_3_clicked();
                
                    void on_about_us_3_clicked();
                    void on_home_4_clicked();
                
                    void on_employees_4_clicked();
                
                    void on_clients_4_clicked();
                
                    void on_stock_4_clicked();
                
                    void on_settings_4_clicked();
                
                    void on_about_us_4_clicked();
                    void on_home_5_clicked();
                
                    void on_employees_5_clicked();
                
                    void on_clients_5_clicked();
                
                    void on_stock_5_clicked();
                
                    void on_settings_5_clicked();
                
                    void on_about_us_5_clicked();
                    void on_home_6_clicked();
                
                    void on_employees_6_clicked();
                
                    void on_clients_6_clicked();
                
                    void on_stock_6_clicked();
                
                    void on_settings_6_clicked();
                
                    void on_about_us_6_clicked();
                
                    void on_list_op_clicked();
                
                    void on_add_op_clicked();
                
                    void on_up_op_clicked();
                
                    void on_del_op_clicked();
                
                    void on_list_op_1_clicked();
                
                    void on_add_op_1_clicked();
                
                    void on_up_op_1_clicked();
                
                    void on_del_op_1_clicked();
                    void on_list_op_2_clicked();
                
                    void on_add_op_2_clicked();
                
                    void on_up_op_2_clicked();
                
                    void on_del_op_2_clicked();
                    void on_list_op_3_clicked();
                
                    void on_add_op_3_clicked();
                
                    void on_up_op_3_clicked();
                
                    void on_del_op_3_clicked();
                    void on_add_val_clicked();
                
                private:
                    Ui::MainWindow *ui;
                    client myclient;
                };
                #endif // MAINWINDOW_H
                
                
                • sources :

                connexion.cpp :

                #include "connexion.h"
                
                connexion::connexion()
                {
                
                }
                bool connexion::connect(){
                bool test=false;
                     QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
                     db.setDatabaseName("ProjectDataBase");
                     db.setUserName("eclipse");
                     db.setPassword("eclipse");
                
                     if (db.open())
                     {
                         test=true;
                     }
                
                 return  test ;
                }
                

                client.cpp :

                #include "client.h"
                // parameterized constructor
                client::client(int cin , QString name , QString firstName , QString dob)
                {
                    this->cin = cin;
                    this->name = name;
                    this->firstName = firstName ;
                    this->dob = dob ;
                }
                //default constructor
                client::client()
                {
                    cin = 0;
                    name = "";
                    firstName = "";
                    dob = "";
                }
                
                /* definition of getters */
                
                int client::getCin(){
                    return cin;
                }
                QString client::getName(){
                    return name;
                }
                QString client::getFirstName(){
                    return firstName;
                }
                QString client::getDateOfBirth(){
                    return dob;
                }
                /* definition of setters */
                
                void client::setCin(int cin){
                    this->cin = cin ;
                }
                void client::setName(QString name){
                    this->name = name  ;
                }
                void client::setFirstName(QString firstName){
                    this->firstName = firstName  ;
                }
                void client::setDateOfBirth(QString dob){
                    this->dob = dob ;
                }
                /* definition of CRUD */
                /*DISPLAY*/
                QSqlQueryModel * client::display_all_clients(){
                    QSqlQueryModel *model = new QSqlQueryModel;
                    model->setQuery("SELECT * FROM CLIENTS");
                    if (model->lastError().isValid()) {
                        qDebug() << "Error executing query:" << model->lastError().text();
                    }
                    model->setHeaderData(0, Qt::Horizontal, QObject::tr("IDENTIFIANT"));
                    model->setHeaderData(1, Qt::Horizontal, QObject::tr("FIRST NAME"));
                    model->setHeaderData(2, Qt::Horizontal, QObject::tr("NAME"));
                    model->setHeaderData(3, Qt::Horizontal, QObject::tr("DATE OF BIRTH"));
                    return model ;
                }
                /*ADD*/
                bool client::add_client() {
                    QSqlQuery query;
                    query.prepare("INSERT INTO CLIENTS (CIN, FIRSTNAME, NAME, DOB) "
                                  "VALUES (?, ?, ?, ?)");
                    query.bindValue(0, cin);
                    query.bindValue(1, firstName);
                    query.bindValue(2, name);
                    query.bindValue(3, dob);
                    return query.exec();
                }
                
                /*DELETE*/
                bool client::delete_client(int cin) {
                    QSqlQuery query;
                    query.prepare("DELETE FROM CLIENTS WHERE CIN = ?");
                    query.bindValue(0, cin);
                    return query.exec();
                }
                

                mainwindow.cpp :

                #include "mainwindow.h"
                #include "./ui_mainwindow.h"
                #include "client.h"
                MainWindow::MainWindow(QWidget *parent)
                    : QMainWindow(parent)
                    , ui(new Ui::MainWindow)
                {
                
                    ui->setupUi(this);
                    ui->stackedWidget->setCurrentWidget(ui->home_page);
                    qDebug() << QSqlDatabase::drivers();
                    /*display clients opration*/
                    ui->clients_table->setModel(myclient.display_all_clients());
                    /*end of display clients opration*/
                }
                
                MainWindow::~MainWindow()
                {
                    delete ui;
                }
                /* insert client button*/
                void MainWindow::on_add_val_clicked()
                {
                    int cin = ui->cin_in->text().toInt();
                    QString name = ui->name_in->text();
                    QString firstName = ui->firstname_in->text();
                    QString dob = ui->dob_in->text();
                    client myClient(cin,name,firstName,dob);
                    bool operation_result = myClient.add_client();
                    if(operation_result == true){
                        std::cout << "insert done" << std::endl;
                    }
                    else{
                        std::cout << "insert not done" << std::endl;
                    }
                }
                /* endof insert client button*/
                /*navigation bar operations*/
                /*home page nav*/
                
                void MainWindow::on_home_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->home_page);
                }
                void MainWindow::on_employees_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->employees_page);
                }
                void MainWindow::on_clients_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->clients_page);
                }
                void MainWindow::on_stock_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->stock_page);
                }
                void MainWindow::on_settings_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->settings_page);
                }
                void MainWindow::on_about_us_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->about_us_page);
                }
                
                /*employees page nav*/
                
                void MainWindow::on_home_2_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->home_page);
                }
                void MainWindow::on_employees_2_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->employees_page);
                }
                void MainWindow::on_clients_2_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->clients_page);
                }
                void MainWindow::on_stock_2_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->stock_page);
                }
                void MainWindow::on_settings_2_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->settings_page);
                }
                void MainWindow::on_about_us_2_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->about_us_page);
                }
                /* employer operations*/
                /*list page*/
                void MainWindow::on_list_op_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->list);
                }
                
                void MainWindow::on_add_op_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->add);
                }
                
                void MainWindow::on_up_op_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->update);
                }
                
                void MainWindow::on_del_op_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->delet);
                }
                /*add page*/
                void MainWindow::on_list_op_1_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->list);
                }
                
                void MainWindow::on_add_op_1_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->add);
                }
                
                void MainWindow::on_up_op_1_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->update);
                }
                
                void MainWindow::on_del_op_1_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->delet);
                }
                /*update page*/
                
                void MainWindow::on_list_op_2_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->list);
                }
                
                void MainWindow::on_add_op_2_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->add);
                }
                
                void MainWindow::on_up_op_2_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->update);
                }
                
                void MainWindow::on_del_op_2_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->delet);
                }
                /*delete page*/
                void MainWindow::on_list_op_3_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->list);
                }
                
                void MainWindow::on_add_op_3_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->add);
                }
                
                void MainWindow::on_up_op_3_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->update);
                }
                
                void MainWindow::on_del_op_3_clicked()
                {
                    ui->employees_operations->setCurrentWidget(ui->delet);
                }
                /*clients page nav*/
                
                void MainWindow::on_home_3_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->home_page);
                }
                void MainWindow::on_employees_3_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->employees_page);
                }
                void MainWindow::on_clients_3_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->clients_page);
                }
                void MainWindow::on_stock_3_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->stock_page);
                }
                void MainWindow::on_settings_3_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->settings_page);
                }
                void MainWindow::on_about_us_3_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->about_us_page);
                }
                /*stock page nav*/
                
                void MainWindow::on_home_4_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->home_page);
                }
                void MainWindow::on_employees_4_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->employees_page);
                }
                void MainWindow::on_clients_4_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->clients_page);
                }
                void MainWindow::on_stock_4_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->stock_page);
                }
                void MainWindow::on_settings_4_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->settings_page);
                }
                void MainWindow::on_about_us_4_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->about_us_page);
                }
                /*abouts us page nav*/
                
                void MainWindow::on_home_5_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->home_page);
                }
                void MainWindow::on_employees_5_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->employees_page);
                }
                void MainWindow::on_clients_5_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->clients_page);
                }
                void MainWindow::on_stock_5_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->stock_page);
                }
                void MainWindow::on_settings_5_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->settings_page);
                }
                void MainWindow::on_about_us_5_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->about_us_page);
                }
                /*employees page nav*/
                
                void MainWindow::on_home_6_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->home_page);
                }
                void MainWindow::on_employees_6_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->employees_page);
                }
                void MainWindow::on_clients_6_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->clients_page);
                }
                void MainWindow::on_stock_6_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->stock_page);
                }
                void MainWindow::on_settings_6_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->settings_page);
                }
                void MainWindow::on_about_us_6_clicked()
                {
                    ui->stackedWidget->setCurrentWidget(ui->about_us_page);
                }
                

                main.cpp

                #include "mainwindow.h"
                #include "connexion.h"
                int main(int argc, char *argv[])
                {
                    QApplication a(argc, argv);
                    MainWindow w;
                       connexion c;
                       bool test=c.connect();
                       if(test)
                       {w.show();
                           QMessageBox::information(nullptr, QObject::tr("database is open"),
                                       QObject::tr("connection successful.\n"
                                                   "Click Cancel to exit."), QMessageBox::Cancel);
                
                   }
                       else
                           QMessageBox::critical(nullptr, QObject::tr("database is not open"),
                                       QObject::tr("connection failed.\n"
                                                   "Click Cancel to exit."), QMessageBox::Cancel);
                
                    return a.exec();
                }
                

                1aebad83-e81d-41b5-ac8c-931029730147-image.png
                ea6d26a8-3579-468a-94d7-bb9cd23049f0-image.png

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

                @eclispe So as I said. You execute a query before opening the database connection. Fix your code.

                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
                2
                • E Offline
                  E Offline
                  eclispe
                  wrote on last edited by
                  #9

                  Yeah @Christian-Ehrlicher , the issue is solved
                  11b5bec8-83a1-4eeb-ae49-591df9bc13e8-image.png
                  thnak you @Christian-Ehrlicher ! and Thanks to all of you for your help with this problem; I truly appreciate your time and effort.

                  • This is the correct version of the code (not perfect but it works ) for anyone who may encounter the same problem :

                  connection.h :

                  #ifndef CONNEXION_H
                  #define CONNEXION_H
                  #include <QSqlDatabase>
                  #include <QSqlError>
                  #include <QSqlQuery>
                  class connexion
                  {
                  public:
                      QSqlDatabase db ;
                      connexion();
                      bool connect();
                      bool check_data_base();
                  };
                  
                  #endif // CONNEXION_H
                  
                  

                  connexion.cpp :

                  #include "connexion.h"
                  
                  connexion::connexion()
                  {
                  
                  }
                  bool connexion::connect() {
                      bool test = false;
                      db = QSqlDatabase::addDatabase("QODBC");
                      db.setDatabaseName("ProjectDataBase");
                      db.setUserName("eclipse");
                      db.setPassword("eclipse");
                  
                      if (db.open()) {
                          test = true;
                      }
                  
                      return test;
                  }
                  
                  bool connexion::check_data_base(){
                      if (db.isValid() && db.isOpen()) {
                          return true;
                      } else {
                          return false;
                      }
                  }
                  

                  mainwindow.cpp :

                  #include "mainwindow.h"
                  #include "./ui_mainwindow.h"
                  #include "client.h"
                  MainWindow::MainWindow(QWidget *parent)
                      : QMainWindow(parent)
                      , ui(new Ui::MainWindow)
                  {
                  
                      ui->setupUi(this);
                      ui->stackedWidget->setCurrentWidget(ui->home_page);
                      qDebug() << QSqlDatabase::drivers();
                      connexion c;
                      c.connect();
                      if (c.check_data_base()) {
                              ui->clients_table->setModel(myclient.display_all_clients());
                          } else {
                              qDebug() << "database is not open";
                          }
                  }
                  
                  MainWindow::~MainWindow()
                  {
                      delete ui;
                  }
                  //rest of code .. 
                  

                  main.cpp :

                  #include "mainwindow.h"
                  #include "connexion.h"
                  int main(int argc, char *argv[])
                  {
                      QApplication a(argc, argv);
                      MainWindow w;
                      w.show();
                  
                      return a.exec();
                  }
                  
                  SGaistS 1 Reply Last reply
                  0
                  • E eclispe has marked this topic as solved on
                  • E eclispe

                    Yeah @Christian-Ehrlicher , the issue is solved
                    11b5bec8-83a1-4eeb-ae49-591df9bc13e8-image.png
                    thnak you @Christian-Ehrlicher ! and Thanks to all of you for your help with this problem; I truly appreciate your time and effort.

                    • This is the correct version of the code (not perfect but it works ) for anyone who may encounter the same problem :

                    connection.h :

                    #ifndef CONNEXION_H
                    #define CONNEXION_H
                    #include <QSqlDatabase>
                    #include <QSqlError>
                    #include <QSqlQuery>
                    class connexion
                    {
                    public:
                        QSqlDatabase db ;
                        connexion();
                        bool connect();
                        bool check_data_base();
                    };
                    
                    #endif // CONNEXION_H
                    
                    

                    connexion.cpp :

                    #include "connexion.h"
                    
                    connexion::connexion()
                    {
                    
                    }
                    bool connexion::connect() {
                        bool test = false;
                        db = QSqlDatabase::addDatabase("QODBC");
                        db.setDatabaseName("ProjectDataBase");
                        db.setUserName("eclipse");
                        db.setPassword("eclipse");
                    
                        if (db.open()) {
                            test = true;
                        }
                    
                        return test;
                    }
                    
                    bool connexion::check_data_base(){
                        if (db.isValid() && db.isOpen()) {
                            return true;
                        } else {
                            return false;
                        }
                    }
                    

                    mainwindow.cpp :

                    #include "mainwindow.h"
                    #include "./ui_mainwindow.h"
                    #include "client.h"
                    MainWindow::MainWindow(QWidget *parent)
                        : QMainWindow(parent)
                        , ui(new Ui::MainWindow)
                    {
                    
                        ui->setupUi(this);
                        ui->stackedWidget->setCurrentWidget(ui->home_page);
                        qDebug() << QSqlDatabase::drivers();
                        connexion c;
                        c.connect();
                        if (c.check_data_base()) {
                                ui->clients_table->setModel(myclient.display_all_clients());
                            } else {
                                qDebug() << "database is not open";
                            }
                    }
                    
                    MainWindow::~MainWindow()
                    {
                        delete ui;
                    }
                    //rest of code .. 
                    

                    main.cpp :

                    #include "mainwindow.h"
                    #include "connexion.h"
                    int main(int argc, char *argv[])
                    {
                        QApplication a(argc, argv);
                        MainWindow w;
                        w.show();
                    
                        return a.exec();
                    }
                    
                    SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #10

                    @eclispe one thing: don't keep a QSqlDatabase instance as member variables. It's all explained in the documentation why.

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

                    E 1 Reply Last reply
                    0
                    • SGaistS SGaist

                      @eclispe one thing: don't keep a QSqlDatabase instance as member variables. It's all explained in the documentation why.

                      E Offline
                      E Offline
                      eclispe
                      wrote on last edited by
                      #11

                      @SGaist Roger that

                      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