ZBLOG

qt封装一个链接 mysql 的类

在Qt中封装一个链接MySQL数据库的类,可以使用QSqlDatabaseQSqlQuery。以下是一个简单的示例,展示了如何创建一个连接到MySQL数据库的类。

1. 数据库管理类头文件 (DatabaseManager.h)

#ifndef DATABASEMANAGER_H
#define DATABASEMANAGER_H

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QString>
#include <QObject>

class DatabaseManager : public QObject {
    Q_OBJECT

public:
    explicit DatabaseManager(const QString &host, const QString &databaseName, 
                             const QString &user, const QString &password, QObject *parent = nullptr);
    ~DatabaseManager();

    bool open();
    void close();
    bool executeQuery(const QString &queryStr);

private:
    QSqlDatabase db;
};

#endif // DATABASEMANAGER_H

2. 数据库管理类实现文件 (DatabaseManager.cpp)

#include "DatabaseManager.h"

DatabaseManager::DatabaseManager(const QString &host, const QString &databaseName, 
                                 const QString &user, const QString &password, QObject *parent) 
    : QObject(parent), db(QSqlDatabase::addDatabase("QMYSQL")) {
    
    db.setHostName(host);
    db.setDatabaseName(databaseName);
    db.setUserName(user);
    db.setPassword(password);
}

DatabaseManager::~DatabaseManager() {
    close();
}

bool DatabaseManager::open() {
    if (!db.open()) {
        qWarning() << "Cannot open database:" << db.lastError().text();
        return false;
    }
    return true;
}

void DatabaseManager::close() {
    if (db.isOpen()) {
        db.close();
    }
}

bool DatabaseManager::executeQuery(const QString &queryStr) {
    QSqlQuery query;
    
    if (!query.exec(queryStr)) {
        qWarning() << "Query execution error:" << query.lastError().text();
        return false;
    }
    
    return true;
}

3. 使用示例

#include <QCoreApplication>
#include "DatabaseManager.h"

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

   // MySQL数据库信息
   QString host = "localhost";         // 数据库主机名或IP地址
   QString databaseName = "test_db";   // 数据库名称
   QString user = "root";               // 用户名
   QString password = "your_password";  // 密码

   DatabaseManager dbManager(host, databaseName, user, password);

   if (dbManager.open()) {
       // 执行创建表的 SQL 语句
       dbManager.executeQuery("CREATE TABLE IF NOT EXISTS test(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255))");

       // 插入数据示例
       dbManager.executeQuery("INSERT INTO test(name) VALUES('Alice')");
       
       // 查询数据示例 (你可以扩展这个方法来处理查询结果)
       // ...

       // 关闭数据库
       dbManager.close();
   }

   return a.exec();
}

注意事项:

  1. 确保安装了MySQL驱动:在你的Qt环境中,必须安装适用于Qt的MySQL驱动程序。如果没有,可以通过Qt的维护工具或手动编译驱动来获取。

  2. 项目文件 (.pro):在.pro文件中添加:

    QT += sql
    
  3. 根据需要扩展:可以增加更多功能,如事务处理、查询结果返回等,以满足实际需求。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=20675

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?