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

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

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

我们需要的dll 就在这个目录下 不过我是用的32位的 这里放个64 的截图
Qt 连接 MYSQL 插入稍微多点的数据

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秒 效率提高了好多