.h头文件:

#ifndef DBMANAGER_H
#define DBMANAGER_H

#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QString>
#include <QDebug>

class DbManager
{
public:
    DbManager();
    bool openDB();
    void closeDB();
    void createTable();
    bool insertIntoTable(const QString& name, const QString& age);
    bool deleteFromTable(const QString& name);
    bool updateTable(const QString& name, const QString& age);
    void printAllData();

private:
    QSqlDatabase m_db;
};

#endif // DBMANAGER_H

.cpp源文件:

#include "dbmanager.h"

DbManager::DbManager()
{
}

bool DbManager::openDB()
{
    m_db = QSqlDatabase::addDatabase("QPSQL");
    m_db.setHostName("localhost");
    m_db.setDatabaseName("mydatabase");
    m_db.setUserName("myusername");
    m_db.setPassword("mypassword");

    if (!m_db.open()) {
        qDebug() << "Error: connection with database failed.";
        return false;
    }
    else {
        qDebug() << "Database connected successfully.";
        return true;
    }
}

void DbManager::closeDB()
{
    m_db.close();
    qDebug() << "Database connection closed.";
}

void DbManager::createTable()
{
    QSqlQuery query;
    query.exec("CREATE TABLE IF NOT EXISTS mytable (name TEXT, age TEXT)");
}

bool DbManager::insertIntoTable(const QString& name, const QString& age)
{
    QSqlQuery query;
    query.prepare("INSERT INTO mytable (name, age) VALUES (:name, :age)");
    query.bindValue(":name", name);
    query.bindValue(":age", age);
    if(query.exec()) {
        qDebug() << "Data inserted successfully.";
        return true;
    }
    else {
        qDebug() << "Error: data not inserted.";
        return false;
    }
}

bool DbManager::deleteFromTable(const QString& name)
{
    QSqlQuery query;
    query.prepare("DELETE FROM mytable WHERE name=:name");
    query.bindValue(":name", name);
    if(query.exec()) {
        qDebug() << "Data deleted successfully.";
        return true;
    }
    else {
        qDebug() << "Error: data not deleted.";
        return false;
    }
}

bool DbManager::updateTable(const QString& name, const QString& age)
{
    QSqlQuery query;
    query.prepare("UPDATE mytable SET age=:age WHERE name=:name");
    query.bindValue(":name", name);
    query.bindValue(":age", age);
    if(query.exec()) {
        qDebug() << "Data updated successfully.";
        return true;
    }
    else {
        qDebug() << "Error: data not updated.";
        return false;
    }
}

void DbManager::printAllData()
{
    QSqlQuery query("SELECT * FROM mytable");
    int nameCol = query.record().indexOf("name");
    int ageCol = query.record().indexOf("age");

    while (query.next()) {
        QString name = query.value(nameCol).toString();
        QString age = query.value(ageCol).toString();
        qDebug() << name << age;
    }
}
``
使用QT中访问PostgreSql数据库分别列出h头文件和cpp源文件

原文地址: https://www.cveoy.top/t/topic/eDYu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录