1.创建数据库
2.修改一个ui
3.添加private slots的按钮事件
private slots:
on_pushButton_update_clicked();
on_pushButton_insert_clicked();
on_pushButton_delete_clicked();
4.添加代码
SqlDialog.h
#ifndef SQLDIALOG_H
#define SQLDIALOG_H
#include <QDialog>
#include <QtSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
namespace Ui {
class SqlDialog;
}
class SqlDialog : public QDialog
{
Q_OBJECT
public:
explicit SqlDialog(QWidget *parent = nullptr);
~SqlDialog();
private:
Ui::SqlDialog *ui;
QSqlDatabase db;
bool connected;
int currentID;
private slots:
void on_pushButton_update_clicked();
void on_pushButton_insert_clicked();
void on_pushButton_delete_clicked();
};
#endif // SQLDIALOG_H
SqlDialog.cpp
#include "sqldialog.h"
#include "ui_sqldialog.h"
SqlDialog::SqlDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SqlDialog)
{
ui->setupUi(this);
db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("127.0.0.1");
db.setUserName("postgres");
db.setPassword("postgres");
db.setDatabaseName("postgres");
connected = db.open();
if(connected)
{
QSqlQuery query;
if(query.exec("SELECT id, name, age, gender, married FROM employee"))
{
while(query.next())
{
qDebug() << query.value(0) << query.value(1) << query.value(2) << query.value(3);
// ui->label_Name->setText(query.value(0).toString());
// ui->label_Age->setText(query.value(1).toString());
currentID = query.value(0).toInt();
ui->lineEdit_name->setText(query.value(1).toString().trimmed());
ui->lineEdit_age->setText(query.value(2).toString());
ui->comboBoxGender->setCurrentIndex(query.value(3).toInt());
ui->checkBoxMarried->setChecked(query.value(4).toBool());
qDebug() << query.value(0).toInt() << query.value(1).toString().trimmed()
<< query.value(2).toString() << query.value(3).toInt() << query.value(4).toBool();
}
}
else
{
qDebug() << query.lastError().text();
}
//db.close();
}
else
{
qDebug() << "Failed to connect to database.";
}
}
SqlDialog::~SqlDialog()
{
delete ui;
}
void SqlDialog::on_pushButton_update_clicked()
{
if(connected)
{
if(currentID == 0)
{
qDebug() << "Nothing to update";
}
else
{
QString id = QString::number(currentID);
QString name = ui->lineEdit_name->text();
QString age = ui->lineEdit_age->text();
QString gender = QString::number(ui->comboBoxGender->currentIndex());
QString married = QString::number(ui->checkBoxMarried->isChecked());
qDebug() << "UPDATE employee SET name = '" + name + "', age = " + age + ", gender = " +gender + ", married = " + married + " WHERE id = " + id;
QSqlQuery query;
if (query.exec("UPDATE employee SET name = '" + name + "', age = " + age + ", gender = " + gender + ", married = " + married + " WHERE id = " + id))
{
qDebug() << "Update success. ";
}
else
{
qDebug() << query.lastError().text();
}
}
}
else
{
qDebug() << "Failed to connected database";
}
}
void SqlDialog::on_pushButton_insert_clicked()
{
if(connected)
{
if(currentID == 0)
{
qDebug() << "Nothing to update";
}
else
{
QString id = QString::number(currentID+1);
QString name = ui->lineEdit_name->text();
QString age = ui->lineEdit_age->text();
QString gender = QString::number(ui->comboBoxGender->currentIndex());
QString married = QString::number(ui->checkBoxMarried->isChecked());
qDebug() << "INSERT INTO employee (id, name, age, gender, married) VALUES ("+ id + "," + "'" + name + "','" + age + "'," + gender + "," + married + ")";
QSqlQuery query;
if (query.exec("INSERT INTO employee (id, name, age, gender, married) VALUES (" + id + "," + "'" + name + "','" + age + "'," + gender + "," + married + ")"))
{
currentID += 1;
qDebug() << "Insert success.";
qDebug() << query.lastInsertId().toInt();
}
else
{
qDebug() << query.lastError().text();
}
}
}
else
{
qDebug() << "Failed to connected database";
}
}
void SqlDialog::on_pushButton_delete_clicked()
{
if (connected)
{
if (currentID == 0)
{
qDebug() << "Nothing to delete.";
}
else
{
QString id = QString::number(currentID);
qDebug() << "DELETE FROM employee WHERE id = " + id;
QSqlQuery query;
if (query.exec("DELETE FROM employee WHERE id = " + id))
{
currentID = 0;
qDebug() << "Delete success.";
}
else
{
qDebug() << query.lastError().text();
}
}
}
else
{
qDebug() << "Failed to connect to database.";
}
if(connected)
{
QSqlQuery query;
if(query.exec("SELECT id, name, age, gender, married FROM employee"))
{
while(query.next())
{
qDebug() << query.value(0) << query.value(1) << query.value(2) << query.value(3);
// ui->label_Name->setText(query.value(0).toString());
// ui->label_Age->setText(query.value(1).toString());
currentID = query.value(0).toInt();
ui->lineEdit_name->setText(query.value(1).toString().trimmed());
ui->lineEdit_age->setText(query.value(2).toString());
ui->comboBoxGender->setCurrentIndex(query.value(3).toInt());
ui->checkBoxMarried->setChecked(query.value(4).toBool());
qDebug() << query.value(0).toInt() << query.value(1).toString().trimmed()
<< query.value(2).toString() << query.value(3).toInt() << query.value(4).toBool();
}
}
else
{
qDebug() << query.lastError().text();
}
//db.close();
}
else
{
qDebug() << "Failed to connect to database.";
}
}
5.运行结果
多谢,亲爱的美美。