以下是一个C++ QT操作MySQL数据库的工具类示例代码,包括连接数据库、创建表、插入数据、删除数据、修改数据、查询数据、查询表字段名称等操作:

#include <QtSql/QSqlDatabase>
    #include <QtSql/QSqlQuery>
    #include <QtSql/QSqlRecord>
    #include <QDebug>

class MysqlTool
    {
    public:
        MysqlTool(const QString& host, int port, const QString& dbname, const QString& user, const QString& password)
        {
            // 连接MySQL数据库
            db_ = QSqlDatabase::addDatabase("QMYSQL");
            db_.setHostName(host);
            db_.setPort(port);
            db_.setDatabaseName(dbname);
            db_.setUserName(user);
            db_.setPassword(password);
            if (!db_.open()) {
                qDebug() << "Failed to connect to database:" << db_.lastError().text();
            }
        }

~MysqlTool()
        {
            // 关闭数据库连接
            db_.close();
        }

bool createTable(const QString& tableName, const QStringList& fields)
        {
            QString sql = QString("CREATE TABLE IF NOT EXISTS %1 (%2)").arg(tableName).arg(fields.join(", "));
            QSqlQuery query;
            if (!query.exec(sql)) {
                qDebug() << "Failed to create table:" << query.lastError().text();
                return false;
            }
            return true;
        }

bool insertData(const QString& tableName, const QStringList& fields, const QVariantList& values)
        {
            QString sql = QString("INSERT INTO %1 (%2) VALUES (%3)").arg(tableName).arg(fields.join(", ")).arg(values.join(", "));
            QSqlQuery query;
            if (!query.exec(sql)) {
                qDebug() << "Failed to insert data:" << query.lastError().text();
                return false;
            }
            return true;
        }

bool deleteData(const QString& tableName, const QString& condition)
        {
            QString sql = QString("DELETE FROM %1 WHERE %2").arg(tableName).arg(condition);
            QSqlQuery query;
            if (!query.exec(sql)) {
                qDebug() << "Failed to delete data:" << query.lastError().text();
                return false;
            }
            return true;
        }

bool updateData(const QString& tableName, const QString& setClause, const QString& condition)
        {
            QString sql = QString("UPDATE %1 SET %2 WHERE %3").arg(tableName).arg(setClause).arg(condition);
            QSqlQuery query;
            if (!query.exec(sql)) {
                qDebug() << "Failed to update data:" << query.lastError().text();
                return false;
            }
            return true;
        }

bool selectData(const QString& tableName, const QStringList& fields, const QString& condition, QList<QVariantList>& result)
        {
            QString sql = QString("SELECT %1 FROM %2 WHERE %3").arg(fields.join(", ")).arg(tableName).arg(condition);
            QSqlQuery query;
            if (!query.exec(sql)) {
                qDebug() << "Failed to select data:" << query.lastError().text();
                return false;
            }
            while (query.next()) {
                QVariantList record;
                for (int i = 0; i < fields.size(); ++i) {
                    record.append(query.value(i));
                }
                result.append(record);
            }
            return true;
        }

QStringList getFields(const QString& tableName)
        {
            QStringList result;
            QSqlRecord record = db_.record(tableName);
            for (int i = 0; i < record.count(); ++i) {
                result.append(record.fieldName(i));
            }
            return result;
        }

private:
        QSqlDatabase db_;
    };

使用示例:

int main()
    {
        MysqlTool mysql("localhost", 3306, "testdb", "root", "password");

// 创建表
        QStringList fields = {"id INT PRIMARY KEY", "name VARCHAR(50)", "age INT"};
        mysql.createTable("students", fields);

// 插入数据
        QStringList insertFields = {"id", "name", "age"};
        QVariantList insertValues = {1, "张三", 20};
        mysql.insertData("students", insertFields, insertValues);

// 查询数据
        QStringList selectFields = {"id", "name", "age"};
        QList<QVariantList> selectResult;
        mysql.selectData("students", selectFields, "age > 18", selectResult);
        for (const auto& record : selectResult) {
            int id = record[0].toInt();
            QString name = record[1].toString();
            int age = record[2].toInt();
            qDebug() << "id:" << id << "name:" << name << "age:" << age;
        }

// 更新数据
        QString setClause = "age = 25";
        QString condition = "id = 1";
        mysql.updateData("students", setClause, condition);

// 删除数据
        QString deleteCondition = "age < 18";
        mysql.deleteData("students", deleteCondition);

// 查询表字段名称
        QStringList fields = mysql.getFields("students");
        qDebug() << "Fields:" << fields;

return 0;
    }

以上代码仅供参考,实际使用时需要根据实际情况进行修改。

需要注意的是,使用QT操作MySQL数据库需要在项目文件中添加以下依赖项:

QT += sql

同时,也需要确保安装了MySQL数据库驱动程序,可以使用以下命令安装:

sudo apt-get install libqt5sql5-mysql

C++ QT MYSQL基操相关推荐

  1. MySQL 基操教程(五) SELECT 数据查看之大于、小于

    前面介绍了使用 insert 对数据表进行数据的插入,在插入数据以后,我们简单使用 SELEECT 进行过查看插入的数据. SELECT * FROM book; SELECT 是查看插入数据的语句, ...

  2. C++ QT QNetworkAccessManager 基操

    QNetworkAccessManager 是 Qt 框架中的一个类,用于管理网络访问.它提供了一种简单的方式来发送网络请求和接收响应,并支持多种协议,如 HTTP.FTP.HTTPS 等.QNetw ...

  3. C++ QT FTP基操

    FTP是一种文件传输协议,可以通过网络将文件从一个计算机传输到另一个计算机.在C++ QT中,可以使用QNetworkAccessManager类来实现FTP上传和下载. FTP上传: 1. 创建QN ...

  4. C++ QT QDBus基操

    以下是使用QDBus进行跨进程通信的具体用法: 1. 创建DBus服务 在服务端进程中,需要创建一个DBus服务,并注册DBus对象.示例代码如下: #include <QDBusConnect ...

  5. C++ QT QTcpSocket基操

    QTcpSocket 是 Qt 框架中的一个类,用于实现 TCP 协议的套接字.它提供了基于流的 TCP 套接字通信,可以用于客户端和服务器端的网络通信.QTcpSocket 可以发送和接收数据,支持 ...

  6. C++ QT QSerialPort基操

    以下是使用QSerialPort的基本步骤:1. 引入QSerialPort头文件 #include <QSerialPort>2. 创建QSerialPort对象 QSerialPort ...

  7. ThinkPHP6项目基操目录

    前言 ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的.ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色 ...

  8. Spring Cloud Alibaba基础入门,一周学会基操!

    Spring Cloud Alibaba基础入门,一周学会基操! 服务拆分: 1.不同微服务,不要重复开发相同业务 2.微服务数据独立,不要访问其它微服务的数据库 3.微服务可以将自己的业务暴露为接口 ...

  9. Qt MySQL (ubuntu)

    MySQL连接 linux下QT+MYSQL开发   按这个程序,出现缺少QMySQL driver的提示 QSqlDatabase: QMYSQL driver not loaded QSqlDat ...

最新文章

  1. servlet接收multipart/form-data表单数据
  2. REST API 的安全基础
  3. Filebeat的下载(图文讲解)
  4. 设计模式十三:proxy(代理)——对象结构型模式
  5. RabbitMQ 四种Exchange
  6. CF1114F-Please, another Queries on Array?【线段树,欧拉函数】
  7. pojo类中list存储其他字段_List集合流处理类型小结
  8. “webservice远程测试显示 “测试窗体只能用于来自本地计算机
  9. SpringCloud工作笔记044---SpringCloud分布式服务器配置要求_记录一下
  10. springMVC文件上传的三种方法
  11. win10+64位 安装Theano并实现GPU加速
  12. C++ 不能在类体外指定关键字static
  13. 编译OpenJDK8:configure: Could not compile and link with freetype. This might be a 32/64-bit mismatch.
  14. hdu1243 最长公共子序列(LCS)
  15. 23考研倒计时,冲刺阶段这样做事半功倍!
  16. SSL 1203 书的复制
  17. QQ群发消息c语言编程,简单写一个实现QQ群发功能的软件
  18. 如何设置QQ和微信截图快捷键
  19. 后疫情时代的酒旅业,让用户“安心”成为行业复苏唯一解?
  20. Android性能优化系列篇(三):崩溃优化+卡顿优化

热门文章

  1. 黑马程序员21——交通灯管理系统
  2. 人脸属性分析--性别、年龄和表情识别,及其相关的数据集合
  3. 【sql: 练习题 28 ,29】查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况),查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数...
  4. 一键完成室内设计:哈佛学霸造出ArchiGAN,房间规划家具摆放全都有,Demo可玩...
  5. 高配笔记本使用CAD搬砖时卡死解决记录
  6. PageRank算法的Python实现
  7. vectorvn1610报价_意大利Vector 通讯模块
  8. 目前国内外的一些机器视觉公司汇总(2006年11月30日更新)
  9. 黑鸟每日安全资源推送​第26期(求关注转发,良心推送)
  10. JAVA程序设计(自主模式)-铺砖问题