在Qt中怎么操作MySQL数据库

一、安装驱动

(1)安装

在Qt中操作MySQL数据库首先要安装mysql的驱动文件,将MySQL下的libmusql.dll文件复制到Qt的安装路径下的bin文件夹下即可。

本文福利, 费领取Qt开发学习资料包、技术视频,内容包括(Qt实战项目视频教程+代码,C++语言基础,C++设计模式,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击** 莬**费领取↓↓****

直接将libmysql.dll文件粘贴到此文件夹中。

(2)验证驱动是否安装成功

复制成功之后来测试一下驱动程序是否安装成功,新建一个文件,选择Qt设计师界面类,后面的操作都保持默认即可。

在新生成的.cpp文件中引入以下库

复制代码
#include <QSqlDatabase>
#include <QDebug>
#include <QMessageBox>  
#include <QSqlError>    
#include <QString>
#include <QSqlQuery>
#include <QVariantList>

在构造函数中插入以下代码,然后点击运行,如果不弹出警告窗口则说明安装成功,否则就是失败了。

复制代码
//添加一个数据库
    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");    //括号内要写出数据库的类型
    //设置数据库
    db.setHostName("127.0.0.1"); //设置数据库的主机ip
    //设置数据库的用户名
    db.setUserName("root");
    //设置数据库的密码
    db.setPassword("123456");    //这个就是安装MySQL时设置的密码
    //设置数据库的名字
    db.setDatabaseName("aaa2");
    //打开数据库(已经安装过mysql驱动了)
    if(db.open()==false){
        QMessageBox::warning(this,"waring",db.lastError().text());
    }

二、使用MySQL数据库

(1)单语句执行

首先创建一个QString对象sql,将要执行的语句写在 sql中,然后创建QSqlQuery类的对象query,调用其exec()函数执行sql中的代码。

复制代码
QString sql = "insert into student (id,name,age,math) values (1,'kaw',20,97)";	//书写想要执行的语句
    QSqlQuery query;	//创建一个QSqlQuery对象
    query.exec(sql);    //执行mysql语句

(2)多语句执行

在sql中,每条语句用分号隔开就可以同时执行多条语句了。下面同时对表格进行增加、删除和更新操作。

复制代码
QString sql = "insert into student (id,name,age,math) values (13,'kaw',20,97);delete from student where id=2;update student set name='sdd',math=100 where id=10;";
    QSqlQuery query;	//创建一个QSqlQuery对象
    query.exec(sql);    //执行mysql语句

(3)批处理操作

方式一:addBindValue()

在query.prepare()中输入自己想要执行的语句,其中待输入的值用"?"代替,在这里"?"就是通配符。在后面添加自己想要设置的值时,可以使用idList、nameList、ageList和mathList。为避免出错,请按照id、name、age、math的顺序来使用addBindValue()进行值的绑定。

复制代码
QSqlQuery query;
    query.prepare("insert into student (id,name,age,math) values (?,?,?,?)");	//书写语句模型
    //添加绑定数据
    QVariantList idList;    //创建一个id列表
    idList << 15<<16<<17;
    query.addBindValue(idList); //完成第一个?的绑定
    QVariantList nameList;
    nameList << "ddd"<<"eee"<<"jjj";
    query.addBindValue(nameList);   //完成第二个?的绑定
    QVariantList ageList;
    ageList << 25<<24<<23;
    query.addBindValue(ageList);    //完成第三个?的绑定
    QVariantList mathList;
    mathList << 90<<89<<90;
    query.addBindValue(mathList);   //完成第四个?的绑定
    //执行批处理
    query.execBatch();

方式二:bindValue()

直接用自定义的名称来完成绑定,这时绑定顺序可以自己决定。

复制代码
QSqlQuery query;
    query.prepare("insert into student (id,name,age,math) values (:id,:name,:age,:math)");  //:id之类的名字时自定义的 自己方便就好
    //添加绑定数据
    QVariantList idList;    //创建一个id列表
    idList << 18<<19<<20;
    query.bindValue(":id",idList); //完成:id的绑定
    QVariantList nameList;
    nameList << "ddd"<<"eee"<<"jjj";
    query.bindValue(":name",nameList);   //完成:name的绑定
    QVariantList ageList;
    ageList << 25<<24<<23;
    query.bindValue(":age",ageList);    //完成:age的绑定
    QVariantList mathList;
    mathList << 90<<89<<90;
    query.bindValue(":math",mathList);   //完成:math的绑定
    //执行批处理
    query.execBatch();

(4)查询

要查询的表为:

value后的值可以是索引,也可以是列名。取出后需要将其转为对应的数据类型。

复制代码
//查询操作
    QSqlQuery query;
    query.exec("select * from student");
    while(query.next()){
        qDebug()<<query.value(0).toInt()
             <<query.value("name").toString().toUtf8().data()
            <<query.value(2).toInt()
           <<query.value(3).toInt();   
    }

查询结果:

本文福利, 费领取Qt开发学习资料包、技术视频,内容包括(Qt实战项目视频教程+代码,C++语言基础,C++设计模式,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击** 莬**费领取↓↓****

相关推荐
小陈工31 分钟前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
0xDevNull5 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花5 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸5 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain5 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希6 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神6 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员6 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java6 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿6 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb