【QT】使用QT连接并操作MySQL数据库(QT5.14.2+MySQL8)

3 篇文章 0 订阅

1、前言

本文主要介绍怎么在QT中连接并操作MySQL数据库。由于在QT的最新版本中没有默认自带MySQL的动态链接库,需要自己编译生成,所以会带来一些问题,在此进行记录以方便日后查看。

我的QT版本为 qt-opensource-windows-x86-5.14.2。这是QT官方能提供的自带安装包的最近版本,更新的版本需要自己编译源代码,可点击此链接进行下载:Index of /archive/qt/5.14/5.14.2,选择下载 qt-opensource-windows-x86-5.14.2.exe 。另外,在安装QT的时候一定要安装源代码!一定要安装源代码!一定要安装源代码!不然到时候还要重新安装,只需要在安装的时候勾选上安装 Source 即可,如下所示:

我的MySQL版本为 mysql8.0.16,可通过mysql -V命令进行查看,如下所示:

该版本的MySQL是64位的!记住,这个很重要!一定要保证QT工程的位数和Mysql的位数一致!

2、准备工作

要在QT中操作MySQL数据库,需要在QT的工程文件.pro中添加如下命令:

点加完之后别忘了保存,并重新编译一下工程。

在QT中可以打印一下当前QT版本支持的数据库:

#include <QSqlDatabase>

qDebug() << QSqlDatabase::drivers();

打印出的结果如下:

通过查看QT的安装目录,也可以发现在QT的安装目录中并没有MySQL的动态链接库,我的查看目录如下所示:

版本不同目录可能不一样,但基本上都是在mingwXX_XX\plugins\drivers目录下。需要注意的是,mingwXX_XX一定要和你的QT工程采用的编译器保持一致!

可见,当前QT版本并不支持MySQL。

所以我们需要通过重新编译的方式生成MySQL的动态链接库。

3、重新编译MySQL动态链接库

首先找到QT的源代码安装目录(这就是为什么一定要安装QT的Source,我当时找不到这个郁闷了半天),找到mysql.pro工程,我的具体目录如下所示:

然后在QT中打开mysql.pro,配置工程,选择编译器,和你的QT工程的编译器保持一致:

然后按照如下方式修改mysql.pro文件:

首先注释掉 QMAKE_USE += mysql ,然后分别添加INCLUDEPATH(在mysql安装目录下)和LIBS(在mysql安装目录下),和DESTDIR(这个是动态库的生成目录,可以直接参考这种写法)。.pro文件修改完成之后保存,然后直接编译(点击QT左下角的锤子标志),直接编译即可,其他的不用管。此时,就可以下当前工程目录下找到新生成的mysql动态库文件,如下所示:

至此,mysql的动态链接库生成完毕。

4、配置QT

前面已经生成好mysql的动态链接库,接下来需要将生成的库拷贝到正确的目录下就可以了。

首先,将生成的三个库文件全部拷贝到QT的数据库引擎目录下(注意编译器的选择,和你的QT工程保持一致),如下所示:

然后将,MySQL安装目录下的mysql库文件,如下所示:

拷贝到QT的目录下,目录如下所示(注意编译器文件的选择):

此时,关于QT中MySQL的配置已经全部完成。通过上面的语句可以看到,当前的QT已经支持MYSQL了:

5、MySQL的简单操作

5.1、连接数据库

    //链接数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

    db.setHostName("127.0.0.1");
    db.setUserName("root");
    db.setPassword("pwd");
    db.setDatabaseName("db_test");
    if(!db.open()){
        qDebug() << "未成功链接到数据库";
    }else{
        qDebug() << "成功链接到数据库";
    }

5.2、插入数据

    QSqlQuery query(db);
    bool re = query.exec("INSERT INTO table_name (col1, col2, col3) VALUES (1, 1, 2)");
    //bool re = query.exec("insert into table_name values(3, 1, 2)");

    if(!re){
        qDebug() << "操作数据库失败!" ;
    }else{
        qDebug() << "操作数据库成功!" ;
    }

5.3、更新数据表

    bool re = query.exec("update table_name set col2=2, period=1 where col1=1");

    if(!re){
        qDebug() << "操作数据库失败!" ;
    }else{
        qDebug() << "操作数据库成功!" ;
    }

5.4、读取数据表

    QSqlQuery db_cursor(db);
    QString cmd = QString("select * from table_name");
    db_cursor->exec(cmd);

    if(db_cursor->size() == -1){
        qDebug() << QString("数据表 <table_name> 操作异常,请检查... ");
        return;
    }else if(db_cursor->size() == 0){
        qDebug() << QString("数据表 <table_name> 没有数据,请检查... ");
        return;
    }else{
        while(db_cursor->next()){
            int  col0= db_cursor->value(0).toInt();
            QString col1= db_cursor->value(1).toString();
        }
    }

  • 16
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
### 回答1: 可以使用MySQL Connector / C++ 5.14.2库来连接MySQL数据库。要在Qt 5.14.2连接MySQL数据库,您需要安装QtMySQL驱动程序。以下是连接MySQL数据库的步骤: 1. 安装MySQL驱动程序 在Qt Creator中,打开菜单 "工具" -> "选项" -> "Kits" -> "Qt 5.14.2" -> "Desktop Qt 5.14.2 GCC 64-bit",然后在 "Qt版本" 下面的 "Qt模块" 中找到 "Qt SQL",确保其已选中。 2. 创建数据库连接Qt Creator中,打开菜单 "文件" -> "新建文件或项目" -> "应用程序" -> "Qt控制台应用程序",然后在 "项目名称" 和 "项目路径" 中输入名称和路径,点击 "下一步"。在 "类名" 中输入 "mainwindow",然后点击 "下一步"。在 "高级设置" 中选择 "Qt Widgets应用程序",然后点击 "完成"。 在 "mainwindow.cpp" 文件中添加以下代码: ``` #include <QCoreApplication> #include <QtSql/QSqlDatabase> #include <QtSql/QSqlQuery> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); // MySQL服务器地址 db.setDatabaseName("database"); // 数据库名称 db.setUserName("username"); // 用户名 db.setPassword("password"); // 密码 if (db.open()) { qDebug() << "Connected to database!"; db.close(); } else { qDebug() << "Failed to connect to database!"; } return a.exec(); } ``` 请替换上述代码中的 "localhost"、"database"、"username" 和 "password" 为您的MySQL服务器地址、数据库名称、用户名和密码。然后编译和运行程序,如果连接成功,将在控制台输出 "Connected to database!"。 希望这能帮助到您! ### 回答2: 在Qt使用MySQL数据库,需要先安装MySQL驱动程序。Qt提供了两个MySQL驱动程序:QMYSQL和QMYSQL3。其中,QMYSQL3已经被弃用,因此建议使用QMYSQL。 1. 安装MySQL驱动程序 在Qt Creator中,选择Tools -> Options -> Build & Run -> Kits,选中你正在使用的Kit,然后点击“Desktop Qt X.X.X”选项卡中的“Manual”按钮,在下拉菜单中选择“MySQL”,并在右侧配置MySQL的安装路径。配置完成后,点击“Apply”按钮,然后点击“OK”按钮,关闭选项对话框。 2. 创建连接 在代码中,要创建一个QSqlDatabase对象,并使用QSqlDatabase::addDatabase()函数来注册一个MySQL连接连接参数和MySQL服务器的相关信息应该以键值对的形式放入QSqlDatabase对象中。如下面的代码所示: ``` QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("mydatabase"); db.setUserName("root"); db.setPassword("mypassword"); if (!db.open()) { qDebug() << "Failed to connect MySQL database!"; } ``` 上述代码中,“localhost”是MySQL服务器的主机名,“mydatabase”是要连接数据库的名称,“root”是MySQL用户名,“mypassword”是用户的密码。如果连接失败,会在输出窗口中输出“Failed to connect MySQL database!”信息。 3. 执行SQL语句 连接成功后,就可以使用QSqlQuery对象执行SQL语句了。如下面的代码所示: ``` QSqlQuery query; query.exec("SELECT * FROM mytable"); while (query.next()) { QString name = query.value(0).toString(); int age = query.value(1).toInt(); qDebug() << name << " " << age; } ``` 上述代码中,“mytable”是要查询的表名,query.exec()函数用于执行SQL语句。如果SQL语句有返回结果,可以使用QSqlQuery::next()函数遍历结果集,并使用QSqlQuery::value()函数获取每一列的值。 在使用完毕后,需要关闭连接: ``` db.close(); ``` ### 回答3: Qt是一个跨平台的C++应用程序开发框架,可以非常轻松地实现界面设计、事件处理、网络通信和数据库操作等功能。MySQL是目前最流行的开源关系型数据库管理系统之一,其社区活跃、易于安装和维护,深受开发者欢迎。 在Qt连接MySQL数据库,需要进行以下几个步骤: 1. 安装MySQL驱动程序 Qt自带的驱动程序没有MySQL的驱动,需要手动下载MySQL驱动程序并安装。在Qt官网的下载页面上可以找到各个平台的MySQL驱动程序,下载后解压缩,将解压缩后的文件复制到Qt的安装目录下的plugins\sqldrivers文件夹内,即可完成驱动程序的安装。 2. 在Qt项目中添加MySQL驱动程序 在Qt项目的.pro文件中添加库文件libmysql.dll,如下所示: LIBS += -L/path/to/mysql -lmysql 其中,/path/to/mysqlMySQL安装目录的路径。 3. Qt连接MySQL数据库Qt代码中,使用如下代码连接MySQL数据库: QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); // 设置主机名 db.setPort(3306); // 设置端口号 db.setDatabaseName("dbname"); // 设置数据库名 db.setUserName("username"); // 设置用户名 db.setPassword("password"); // 设置密码 bool ok = db.open(); // 连接数据库 if(ok) { qDebug() << "数据库连接成功!"; } else { qDebug() << "数据库连接失败!"; } 其中,QSqlDatabase是Qt数据库对象的基类,addDatabase()函数用于创建一个MySQL数据库对象,setHostName()、setPort()、setDatabaseName()、setUserName()和setPassword()函数用于设置连接MySQL数据库的参数,open()函数用于连接数据库,返回值表示连接是否成功。 4. Qt中查询MySQL数据库Qt代码中,使用如下代码查询MySQL数据库: QSqlQuery query; query.exec("SELECT * FROM table"); while(query.next()) { QString name = query.value("name").toString(); int age = query.value("age").toInt(); qDebug() << name << age; } 其中,QSqlQuery是Qt中查询对象的基类,exec()函数用于执行SQL语句,next()函数用于遍历查询结果,value()函数用于获取查询结果的值,toString()函数和toInt()函数用于将值转换为QString和int类型,分别表示姓名和年龄。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值