Qt 中使用 QPSQL 连接 PostgreSQL 数据库示例
使用 Qt 访问 PostgreSQL 数据库
本示例演示如何在 Qt 中使用 QPSQL 连接 PostgreSQL 数据库,并提供基本的数据库操作方法,包括连接数据库、创建表、插入数据、删除数据、更新数据和读取数据等。
.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;
}
}
注意:
- 实际使用时,需要将示例代码中的 'localhost'、'mydatabase'、'myusername' 和 'mypassword' 替换为您的实际数据库连接信息。
- 示例代码只演示了基本的数据库操作,实际应用中可能需要根据具体需求进行扩展。
- 可以使用 Qt 的 QtSql 模块提供的其他类和方法进行更复杂的数据库操作。
希望本示例能够帮助您更好地理解如何在 Qt 中使用 QPSQL 连接 PostgreSQL 数据库。
原文地址: https://www.cveoy.top/t/topic/nVa4 著作权归作者所有。请勿转载和采集!