Qt 连接 MYSQL 插入稍微多点的数据

博客介绍了Qt连接MySQL的相关操作,包括根据编译器选择对应版本的mysql dll,在pro文件中加入QT+= sql。重点讲述插入大量数据时的效率问题,使用for循环插入8000条数据需8.5分钟,而采用事务操作可将时间缩短至1 - 2秒,大幅提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql 8.0的部署的话 我转载一篇
https://blog.youkuaiyun.com/qq_37350706/article/details/81707862?tdsourcetag=s_pctim_aiomsg
非常的详细

Qt 连接 mysql 需要一个 mysql 的dll 如果你用32位Mingw 编译器那么需要下载32位的数据库 取出他的dll
如果使用 64位的 MSVC 编译器 就用64位的dll 必须对应

我们需要的dll 就在这个目录下 不过我是用的32位的 这里放个64 的截图
在这里插入图片描述

pro 文件里面 加入 QT+= sql

     QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
	//主机名就是 localhost 或者 127.0.0.1
    db.setHostName("localhost");
    //端口号
    db.setPort(3306);
    //用户名
    db.setUserName("root");
    //密码
    db.setPassword("root");

    bool ok = db.open();
    if(ok)
    {
        qDebug()<<"ok";
    }
    else
    {
        qDebug()<<"error";
        return;
    }

上面是基本的连接
增删查改这里就不写了 就写一下遇到的问题

当我们需要把稍微多的数据 比如 8000 条如果用 for循环 大约8.5分钟 才8000条就 8.5分钟!!!

    for(int i = 0;i<8000;i++)
    {

  	 	 QString str = "insert into student.info(NAME,SCORE) values('AHua' ,30)";

    	QSqlQuery query;
    	
   	 	query.exec(str);
    }
亲测  大约 插入一条数据 是 45-65ms 根据电脑性能不同
要怎么解决 看时间浪费在哪里?

事务

存入一条数据流程: 打开数据库 -> 插入数据 ->关闭数据库
存入8000条数据流程: (打开数据库 -> 插入数据 ->关闭数据库 )* 8000
其实时间浪费在 打开和关闭数据库
要做到 打开数据库 写入8000条 关闭数据库 就省时间了

用到事务

//开启事务
    if(db.transaction())
    {
        qDebug()<<"open ok";
    }
    else{
        qDebug()<<"open error";
    }

	//输入插入
    for(int i = 0;i<8000;i++)
    {

  	 	 QString str = "insert into student.info(NAME,SCORE) values('AHua' ,30)";

    	QSqlQuery query;
    	
   	 	query.exec(str);
    }
	//提交事务
    if(db.commit())
    {
        qDebug()<<"commit ok";
    }
    else
        qDebug()<<"commit error";
        //失败以后可以进行回滚

这样的话 8000条数据 由原来的 8.5分钟 变成现在的 1-2秒 效率提高了好多

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值