QT_C++_mysql_单例封装

本文介绍了如何在QT C++项目中实现MySQL数据库的单例封装,包括工程文件的添加、单独的数据库头文件和C++源文件的创建,以及详细展示了如何在代码中使用这个单例类进行数据操作,例如遍历数据库记录。
摘要由CSDN通过智能技术生成

QT_C++_mysql_单例封装

工程文件加入

QT       += sql

单独数据库头文件

#ifndef DATABASESERVER_H
#define DATABASESERVER_H

#include<QSqlDatabase>//qt安装目录中需要有dll连接文件
#include<QSqlQuery>
#include<QSqlError>
#include<QDebug>

class DatabaseServer
{
   
private:
    DatabaseServer();
    static DatabaseServer* instance;
    QSqlDatabase db;
    QSqlQuery query;
public:
    static DatabaseServer* getInstance(){
   return instance;}
    bool open();
    void close();
    bool operate(QString);
    bool getNext();
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个强大的跨平台C++应用程序开发框架,与MySQL数据库进行交互也是其中一个重要的应用方向。 Qt提供了许多MySQL的接口,但是如果直接使用这些接口会使得我们的应用程序中代码量增加,管理起来会更加困难。因此,对Qt中的MySQL操作进行封装,对于提高代码的可读性和管理性是非常有帮助的。 下面是一个简单的MySQL操作封装实现: ```C++ #include <QSqlQuery> #include <QSqlError> class QtMysql { public: explicit QtMysql(const QString& hostName, const QString& dbName, const QString& userName, const QString& password, const uint port = 3306, const QString& connectionName = "MYSQL_CONNECTION"); virtual ~QtMysql(); /* Execute query */ QSqlQuery exec(QString sql, bool bRetQuery = false); /* Transaction */ void beginTransaction(); void commitTransaction(); void rollbackTransaction(); private: QString m_dbName; QSqlDatabase m_db; }; ``` 该类的构造函数需要传递MySQL的连接信息。使用exec函数执行MySQL查询语句,如果是查询语句返回结果集,如果不是查询语句不会返回任何结果。beginTransaction、commitTransaction和rollbackTransaction分别封装MySQL的事务处理操作的实现。 下面是具体实现: ```C++ #include "qtmysql.h" QtMysql::QtMysql(const QString& hostName, const QString& dbName, const QString& userName, const QString& password, const uint port, const QString& connectionName) : m_dbName(dbName) { m_db = QSqlDatabase::addDatabase("QMYSQL", connectionName); m_db.setHostName(hostName); m_db.setPort(port); m_db.setUserName(userName); m_db.setPassword(password); m_db.setDatabaseName(dbName); if (!m_db.open()) qDebug() << m_db.lastError().text(); } QtMysql::~QtMysql() { if (m_db.isOpen()) { m_db.close(); } } QSqlQuery QtMysql::exec(QString sql, bool bRetQuery) { QSqlQuery query(m_db); bool bRet = query.exec(sql); if (bRetQuery) { return query; } return QSqlQuery(); } void QtMysql::beginTransaction() { QSqlQuery query(m_db); query.exec("BEGIN"); } void QtMysql::commitTransaction() { QSqlQuery query(m_db); query.exec("COMMIT"); } void QtMysql::rollbackTransaction() { QSqlQuery query(m_db); query.exec("ROLLBACK"); } ``` 在使用时,可以直接调用该封装类的相关函数,例如: ```C++ QtMysql mysql("127.0.0.1", "test", "root", "", 3306); mysql.beginTransaction(); mysql.exec("UPDATE table SET column1=1 WHERE id=1"); mysql.exec("UPDATE table SET column1=2 WHERE id=2"); mysql.rollbackTransaction(); mysql.exec("SELECT * FROM table WHERE column1=1", true); while (mysql.next()) { // 处理查询结果 ... } ``` 这样使得代码的可读性和可维护性都有了很大提升。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值