Search This Blog

2020/12/17

QT & Mysql

 

QT5/Creator connecting to Mysql


From mysql website download driver for C.Extract It and and library in bin folder of QT.

On Ubuntu it is usrlib/qt5/bin.In case of window these will be dll.


Now in your Existing program open project_name.pro file search for


QT       += core gui

add sql at end so that it look like below

QT       += core gui sql

For Purpose of Testing I created a MyUser Table as follows

mysql> show columns from MyUser;
    
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int         | NO   | PRI | NULL    | auto_increment |
| shortName | varchar(50) | YES  |     | NULL    |                |
| tel       | varchar(20) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

Now on UI i created two textboxes one for name & other for telephone.


 
Code for mainWindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QMessageBox> #include <QtSql> #include <QSqlDatabase> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void ShowMsg(QString strMsg) { QMessageBox msgBox; msgBox.setText(strMsg); msgBox.exec(); } void MainWindow::on_pbSubmit_clicked() { QSqlDatabase db; db = QSqlDatabase::addDatabase("QMYSQL","MyConnect"); db.setHostName("localhost"); db.setUserName("root"); db.setPassword("sangram"); db.setDatabaseName("sangram"); QString name = ui->leName->text(); QString tel = ui->leTel->text(); if (db.open()) { QMessageBox::information(this,"Connection","Connection Success"); QSqlQuery query(QSqlDatabase::database("MyConnect")); query.prepare("INSERT INTO MyUser(shortName,tel)values(:shortName,:telephone)"); query.bindValue(":shortName",name); query.bindValue(":telephone",tel); if(query.exec()) { QMessageBox::information(this,"Insertion","Insertion Success"); }else { QMessageBox::information(this,"Insertion","Insertion failed"); } }else{ QMessageBox::information(this,"Connection","Connection failed"); } }

Here code block below do connectivity to mysql


      QSqlDatabase db;

    db = QSqlDatabase::addDatabase("QMYSQL","MyConnect");
    db.setHostName("localhost");
    db.setUserName("root");
    db.setPassword("sangram");
    db.setDatabaseName("sangram");
 MyConnect is connection name,QMYSQL is driver for mysql.
LeName & leTel are two lineEdit means textboxes on form whose values used to insert into database.

In below Code we are building our query of insert

        QSqlQuery query(QSqlDatabase::database("MyConnect"));
        query.prepare("INSERT INTO MyUser(shortName,tel)values(:shortName,:telephone)");
        query.bindValue(":shortName",name);
        query.bindValue(":telephone",tel);

query.exec() execute sql query and return true or false.

Here Messagebox is shown for success & failure of connection & query execution. As follows.

QMessageBox::information(this,"Connection","Connection failed"); 
Code for project is available at https://github.com/gitsangramdesai/qt-mysql
 

No comments:

Post a Comment