ZBLOG

qt封装一个链接 mysql 的类

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

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

  1. #ifndef DATABASEMANAGER_H
  2. #define DATABASEMANAGER_H
  3. #include <QSqlDatabase>
  4. #include <QSqlQuery>
  5. #include <QSqlError>
  6. #include <QString>
  7. #include <QObject>
  8. class DatabaseManager : public QObject {
  9. Q_OBJECT
  10. public:
  11. explicit DatabaseManager(const QString &host, const QString &databaseName,
  12. const QString &user, const QString &password, QObject *parent = nullptr);
  13. ~DatabaseManager();
  14. bool open();
  15. void close();
  16. bool executeQuery(const QString &queryStr);
  17. private:
  18. QSqlDatabase db;
  19. };
  20. #endif // DATABASEMANAGER_H

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

  1. #include "DatabaseManager.h"
  2. DatabaseManager::DatabaseManager(const QString &host, const QString &databaseName,
  3. const QString &user, const QString &password, QObject *parent)
  4. : QObject(parent), db(QSqlDatabase::addDatabase("QMYSQL")) {
  5. db.setHostName(host);
  6. db.setDatabaseName(databaseName);
  7. db.setUserName(user);
  8. db.setPassword(password);
  9. }
  10. DatabaseManager::~DatabaseManager() {
  11. close();
  12. }
  13. bool DatabaseManager::open() {
  14. if (!db.open()) {
  15. qWarning() << "Cannot open database:" << db.lastError().text();
  16. return false;
  17. }
  18. return true;
  19. }
  20. void DatabaseManager::close() {
  21. if (db.isOpen()) {
  22. db.close();
  23. }
  24. }
  25. bool DatabaseManager::executeQuery(const QString &queryStr) {
  26. QSqlQuery query;
  27. if (!query.exec(queryStr)) {
  28. qWarning() << "Query execution error:" << query.lastError().text();
  29. return false;
  30. }
  31. return true;
  32. }

3. 使用示例

  1. #include <QCoreApplication>
  2. #include "DatabaseManager.h"
  3. int main(int argc, char *argv[]) {
  4. QCoreApplication a(argc, argv);
  5. // MySQL数据库信息
  6. QString host = "localhost"; // 数据库主机名或IP地址
  7. QString databaseName = "test_db"; // 数据库名称
  8. QString user = "root"; // 用户名
  9. QString password = "your_password"; // 密码
  10. DatabaseManager dbManager(host, databaseName, user, password);
  11. if (dbManager.open()) {
  12. // 执行创建表的 SQL 语句
  13. dbManager.executeQuery("CREATE TABLE IF NOT EXISTS test(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255))");
  14. // 插入数据示例
  15. dbManager.executeQuery("INSERT INTO test(name) VALUES('Alice')");
  16. // 查询数据示例 (你可以扩展这个方法来处理查询结果)
  17. // ...
  18. // 关闭数据库
  19. dbManager.close();
  20. }
  21. return a.exec();
  22. }

注意事项:

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

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

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


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?