Qt5数据库PostgreSQL应用2

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.运行结果

多谢,亲爱的美美。

猜你喜欢

转载自blog.csdn.net/islinyoubiao/article/details/113778278