Qt5数据库PostgreSQL应用5

用表格方便显示数据表table。

添加代码:

DBModelViewDialog.h

#ifndef DBMODELVIEWDIALOG_H
#define DBMODELVIEWDIALOG_H

#include <QDialog>

#include <QtSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QMessageBox>
#include <QDebug>
#include <QTableWidgetItem>

namespace Ui {
class DBModelViewDialog;
}

class DBModelViewDialog : public QDialog
{
    Q_OBJECT

public:
    explicit DBModelViewDialog(QWidget *parent = nullptr);
    ~DBModelViewDialog();

private:
    Ui::DBModelViewDialog *ui;

    bool hasInit;
    QSqlDatabase db;
private slots:
    void on_tableWidget_itemChanged(QTableWidgetItem *item);

};

#endif // DBMODELVIEWDIALOG_H

DBModelViewDialog.cpp

#include "dbmodelviewdialog.h"
#include "ui_dbmodelviewdialog.h"



DBModelViewDialog::DBModelViewDialog(QWidget *parent) :
    QDialog(parent),
hasInit(false),
    ui(new Ui::DBModelViewDialog)
{
    ui->setupUi(this);

    db=QSqlDatabase::addDatabase("QPSQL");
    db.setHostName("127.0.0.1");
    db.setUserName("postgres");
    db.setPassword("postgres");
    db.setDatabaseName("postgres");
    //ui->tableWidget->setColumnHidden(0, true);
    //ui->tableWidget->setRowCount(8);
    int rowNum = 0;
    if(db.open())
    {
        qDebug() << "DB opened";
        QSqlQuery query;
        if(query.exec("SELECT id, name, age, gender, married FROM employee"))
        {
            qDebug() << "DB opened adn query";
            while(query.next())
            {
                qDebug() << query.value(0) << query.value(1) << query.value(2) << query.value(3) << query.value(4);
                QString id = query.value(0).toString();
                QString name = query.value(1).toString();
                QString age = query.value(2).toString();
                int gender = query.value(3).toInt();
                bool married = query.value(4).toBool();
                ui->tableWidget->setRowCount(ui->tableWidget->rowCount()+1);

                //qDebug() << "row count: " << ui->tableWidget->rowCount();
                //rowNum = ui->tableWidget->rowCount();
                //ui->tableWidget->insertRow(rowNum);
                //qDebug() << "row count: " << ui->tableWidget->rowCount();
                QTableWidgetItem* idItem = new QTableWidgetItem(id);
                QTableWidgetItem* nameItem = new QTableWidgetItem(name);
                QTableWidgetItem* ageItem = new QTableWidgetItem(age);
                QTableWidgetItem* genderItem = new QTableWidgetItem();
                qDebug() << "id: " << id << " name: " << name  << " age: " << age;
                if(gender == 0)
                    genderItem->setData(0, "Male");
                else
                    genderItem->setData(0, "Female");
                QTableWidgetItem* marriedItem = new QTableWidgetItem();
                if(married)
                    marriedItem->setData(0, "Yes");
                else
                    marriedItem->setData(0, "No");
                //qDebug() << "row count: " << ui->tableWidget->rowCount();
                ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 0, idItem);
                ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 1, nameItem);
                ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 2, ageItem);
                ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 3, genderItem);
                ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 4, marriedItem);
            }
            hasInit = true;

        }
        else
        {
            qDebug() << query.lastError().text();
        }

    }
    else
    {
        qDebug() << "Failed to connect to database.";
    }
}

DBModelViewDialog::~DBModelViewDialog()
{
    db.close();
    delete ui;
}

void DBModelViewDialog::on_tableWidget_itemChanged(QTableWidgetItem *item)
{
//    if (hasInit)
//    {
//        QString id = ui->tableWidget->item(item->row(), 0)->data(0).toString();
//        QString name = ui->tableWidget->item(item->row(), 1)->data(0).toString();
//        QString age = QString::number(ui->tableWidget->item(item->row(), 2)->data(0).toInt());
//        ui->tableWidget->item(item->row(), 2)->setData(0, age);
//        QString gender;
//        if (ui->tableWidget->item(item->row(), 3)->data(0).toString() == "Male") {
//            gender = "0";
//        } else {
//            ui->tableWidget->item(item->row(), 3)->setData(0, "Female");
//            gender = "1";
//        }
//        QString married;
//        if (ui->tableWidget->item(item->row(), 4)->data(0).toString() == "No") {
//            married = "0";
//        } else {
//            ui->tableWidget->item(item->row(), 4)->setData(0, "Yes");
//            married = "1";
//        }
//        qDebug() << id << name << age << gender << married;
//        QSqlQuery query;
//        if (query.exec("UPDATE employee SET name = '" + name + "', age = '" + age + "', gender = '" + gender + "', married = '" + married + "' WHERE id = " + id)) {
//            QMessageBox::information(this, "Update Success", "Data updated to database.");
//        } else {
//            qDebug() << query.lastError().text();
//        }
//    }
}

运行结果:

多谢,亲爱的美美。

猜你喜欢

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