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