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