Qt+Mysql数据库(云端)问题解决汇总

1.环境问题解决

在不同平台下最常见问题MYSQL driver not loaded

win:

可以简单理解driver缺少的问题是相关库缺少的问题, qsqlmysql.dll 与 qsqlmysqld.dll 或是 libmysql.dll与libmysql.lib。

QT:MYSQL driver not loaded解决方法 - ShineLe - 博客园0、参考(按对本人帮助从高到低排列) Qt5.14.1 如何编译和使用mysql和mariadb数据库驱动 (15条消息) QMYSQL driver not loaded 的原理和解决办法_m158Qt+Mysql数据库(云端)问题解决汇总https://www.cnblogs.com/ShineLeBlog/p/14908927.html

linux:

通常百度给的解决方案,需要so文件版本号一致,如果不一致就要重新编译了。

解决Ubuntu环境下,Qt无法连接MySQL问题_LiuCH4NG的博客-程序员秘密 - 程序员秘密Qt+Mysql数据库(云端)问题解决汇总https://cxymm.net/article/m0_43404560/95322519

树莓派:

好解决一行命令解决

【树莓派】Qt连接Mysql出现:QSqlDatabase: QMYSQL driver not loaded_weixin_38226447的博客-CSDN博客我的qt驱动目录:/usr/lib/arm-linux-gnueabihf/qt5/plugins/sqldrivers,但只发现libqsqlite.so修改这个文件夹权限:sudo chmod -R 777 /usr/lib/arm-linux-gnueabihf/qt5/plugins/sqldrivers把Qt5.9.1的.so文件copy进去,再运行。...Qt+Mysql数据库(云端)问题解决汇总https://blog.csdn.net/weixin_38226447/article/details/104230523

2.插入速率优化

        (1) 多次插入,不要单次插入,例如,一次插入多条数据

        (2) 开启事务机制,一般数据库默认自动提交,提交一次,开启关闭一次事务,我们可以在当前代码中直接开启事务插入多条,速率有明显提升。

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.transaction();

//执行插入操作

db.commit();

        (3) 执行批处理操作 execBatch()

QString sql = "INSERT INTO heartbreath(RadarName,heart,OutHeart,breath,OutBreath) "
                      "VALUES(?,?,?,?,?)";

    QVariantList vlist_ip;
    QVariantList vlist_heart;
    QVariantList vlist_outheart;
    QVariantList vlist_breath;
    QVariantList vlist_outbreah;

    QSqlQuery query;
    query.prepare(sql);

    db.transaction();

    int size = arr.count();
    for(int i = 0; i< size; i++)
    {
            vlist_ip << arr[i].ip;
            vlist_heart << arr[i].heart;
            vlist_outheart << QString::number(outHeart[i]);
            vlist_breath << arr[i].breath;
            vlist_outbreah << QString::number(outBreath[i]);
    }

    query.addBindValue(vlist_ip);
    query.addBindValue(vlist_heart);
    query.addBindValue(vlist_outheart);
    query.addBindValue(vlist_breath);
    query.addBindValue(vlist_outbreah);
   
    if(!query.execBatch())
    {
        qDebug()<<query.lastError().text();//输出错误信息
    }


    db.commit();

3.打包发布至平台找不到驱动解决

程序内部添加一句

QCoreApplication::addLibraryPath("./plugins");

若还是找不到,找相应编译器下对应plugins/sqldrivers,将该目录下的文件拷至发布文件夹下。

上一篇:submit提交表单不跳转页面,及刷新页面


下一篇:树莓派3 启动过程分析