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

多谢,亲爱的美美。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值