出现这个告警是因为打开了多个db而没有及时关闭,网上搜了答案是使用完了执行

QSqlDatabase::removeDatabase(m_connectionName);

泄漏的问题有所改善,但点快了仍然有问题,研究了自己的代码才发现,原来自己每次 query时都open一下,即使每次查完后都关闭也来不及的。

将open 和 close函数放在构造和析构中执行;问题解决;

openSQL

void Worker::openDatabase()
{
QDateTime dateTime = QDateTime::currentDateTime();
QString m_dbName = "zzz";
m_connectionName = "m_dbName";
m_connectionName += dateTime.toString("_yyyyMMdd_hhmmss"); m_db = QSqlDatabase::addDatabase("QMYSQL", m_connectionName);
if (!m_db.isValid()) {
qDebug()<<"openDatabase not valid";
return ;
} m_db.setHostName("localhost");
m_db.setUserName("root");
m_db.setPassword("root");
m_db.setDatabaseName(m_dbName); if (!m_db.open()) {
qDebug()<<"openDatabase not open";
return ;
}
m_query = new QSqlQuery(m_db);
}

closeSQL

void Worker::closeDatabase()
{
if(m_query != NULL )
{
delete m_query;
m_query = NULL;
} if (m_db.isValid()) {
if (m_db.isOpen())
m_db.close();
m_db = QSqlDatabase::database("", false);
QSqlDatabase::removeDatabase(m_connectionName);
}
qDebug()<<"closed;";
}

最后是工作函数

void Worker::slot1()
{
QString str = "delete from test where id > 300000 ";
QString str1 = "UPDATE test SET content = 'Checked' WHERE content = 'Wilson' ";
QString str2 = "update test set content = 'zero.' where content > '10000' "; qDebug()<<"3 slots1 : "<<QThread::currentThreadId();
tmpTime.start();
m_db.transaction();
for (int i = ; i < ; i++ )
{
QString str3 = QString("insert into test(content) values('[Checked]')");
m_query->exec(str3);
globalVar++;
}
m_query->exec(str1);
m_query->exec(str2);
m_query->exec(str); m_db.commit();
qDebug()<<"Time Elapsed: "<<tmpTime.elapsed()<<" ms"; #if 0
while(m_query->next()) //query.next()指向查找到的第一条记录,然后每次后移一条记录
{
int ele0 = m_query->value().toInt();
QString ele1 =m_query->value().toString();
QString ele2 = m_query->value().toString();
qDebug() << ele0 <<ele1 <<ele2 ;
}
#endif qDebug()<<"query done.";
emit sig1(); }

1, Developing utilities.

2, Wellknown linuxc

3,. wellknown qt

===================================

compile mysql for qt

'qt_sql_default_connection' is still in use的更多相关文章

  1. QT基本使用

    安装方法: ubuntu12.04下安装QT方法:http://blog.csdn.net/xsl1990/article/details/8299756 输入以下命令: sudo apt-get i ...

  2. 解析Qt4.7.3编译MySql数据库驱动,存中文乱码、过滤转义字符问题

    问题:使用QSqlDataBase类建立连接MySql数据库驱动加载失败 QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available ...

  3. 【原创】<Debug> “duplicate connection name”

    [Problem] duplicate connection name [Solution] 在Qt上使用SQLite的时候,如果第二次使用QSqlDatabase::addDatabase()方式时 ...

  4. 【原创】连接数据库MySQL,读取、显示、修改数据

    /* Time: 2017.01.02 —— 2017.01.04 * Author: WJ * Function:连接数据库,从数据库中读取图片并显示(已成功) */ [参考链接] MySQL存入图 ...

  5. 在Qt中使用SQLite数据库

    前言 SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统. Qt5以上版本可以直接使用SQLite(Qt自带驱动). 用法 1 准备 引入 ...

  6. 很好的QSqlDatabase问题说明,关于连接错误(转)

    QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connect ...

  7. Qt+数据库

    前言支持内置数据库: 一.sqlite 1.在头文件中声明数据库对象 QSqlDatabase db; 2.在构造函数中定义对象(最好这样定义,因为对于db来说只需要addDatabase一次,否则多 ...

  8. Qt中使用QSqlDatabase::removeDatabase()的正确方法 good

    如果你用过Qt的QSqlDatabase的话,多半会对下面的警告信息感兴趣: QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_defau ...

  9. Qt 操作SQLite数据库

    项目中通常需要采用各种数据库(如 Qracle.SQL Server.MySQL等)来实现对数据的存储.查询等功能.下面讲解如何在 Qt 中操作 SQlite 数据库. 一.SQLite 介绍 Sql ...

随机推荐

  1. Java 设计模式系列(五)原型模式

    Java 设计模式系列(五)原型模式 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象.这就是选型模式的用意. 一.原型模 ...

  2. 如何用Python实现常见机器学习算法-2

    二.逻辑回归 1.代价函数 可以将上式综合起来为: 其中: 为什么不用线性回归的代价函数表示呢?因为线性回归的代价函数可能是非凸的,对于分类问题,使用梯度下降很难得到最小值,上面的代价函数是凸函数的图 ...

  3. xcconfig

    [xcconfig] 1.When you can use a .xcconfig file? Use .xcconfig files if you find yourself changing th ...

  4. 友盟统计小白教程:创建应用,申请appkey

    上回书讲到,我们已经和一个靠谱的人选择一个靠谱的统计平台注册了一个帐号,下面就该创建一个应用了. 介绍一个基础知识: appkey:友盟识别app的唯一标识,目前友盟平台上超过500000款App,每 ...

  5. ubuntu12.04安装nox-classic

    Setup Nox repo for ‘nox-dependencies’ package $ cd /etc/apt/sources.list.d/ $ wget http://openfl ...

  6. spark standalone集群部署 实践记录

    本文记录了一次搭建spark-standalone模式集群的过程,我准备了3个虚拟机服务器,三个centos系统的虚拟机. 环境准备: -每台上安装java1.8 -以及scala2.11.x (x代 ...

  7. 三种调用WCF服务的代码

    wsHttpBinding,Massage UserName认证 static void Main(string[] args) { //使用服务引用方式生成的Client调用服务,使用自动生成的配置 ...

  8. Ubuntu 16.04调节屏幕显示字体大小

    对于高分辨屏幕来说,Ubuntu的字体可能会有点小,反之,低分率的屏幕字体有点大,设置方法如下: [System Settings]->[Displays]->[ Scale for me ...

  9. Appium 之处理首次启动手机App时的系统权限弹框

    一般首次启动一个手机App时都会有系统权限弹框,如下图所示: 权限弹窗上面的按钮都是固定的,只需要定位到“ALLOW”按钮,点击就可以了,代码如下: 这里主要用selenium里面的显示等待模块(We ...

  10. nginxのerror_logはformat指定できない.

    備忘録です. http://toshitanian.hatenablog.com/entry/2013/10/25/023838 2013-10-25 nginxのerror_logはformat指定 ...