出现这个告警是因为打开了多个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. php 伪协议探究

    0x01序 PHP伪协议探究 php中支持的伪协议有下面这么多 file:// — 访问本地文件系统 http:// — 访问 HTTP(s) 网址 ftp:// — 访问 FTP(s) URLs p ...

  2. ANGULAR 2 BITS: UNIFIED DEPENDENCY INJECTION

    Angular 1.x has two APIs for injecting dependencies into a directive. These APIs are not interchange ...

  3. ubuntu系统中解决github下载速度慢问题

    如果你在使用github,出现访问和下载速度慢问题,可以通过修改host解决.记得不要踩坑哦!分四步: 第一步:查询速度快的IP地址 在http://tool.chinaz.com/dns中查询下面三 ...

  4. Android登录模块原理及实现

    1.需要保持登录状态,在本地保存登录的状态信息. 2.界面布局 3.登录流程 输入信息=>登录成功=>手机号发送验证码=>输入验证码=>登录成功

  5. Mac下eclipse 启动时出现An error has occurred. See the log file的问题

    eclipse原来可以使用的好好的,装了多个版本的jdk后,打开eclipse出现An error has occurred. See the log file的问题,经过查找,可能原因之一是机子装了 ...

  6. 指向字符串的指针在printf与cout区别

    根据指针用法: * 定义一个指针, &取变量地址, int b = 1; int *a = &b; 则*a =1,但对于字符串而言并非如此,直接打印指向字符串的指针打印的是地址还是字符 ...

  7. 使用js/jquery查找iframe中的

    原生js  一.在iframe的父窗口中获取iframe中的元素: js代码 格式: window.frames["iframe的name值"].document.getEleme ...

  8. 20155318 2016-2017-2 《Java程序设计》第九学习总结

    20155318 2016-2017-2 <Java程序设计>第九学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛型 ...

  9. kali下搭建WiFi钓鱼热点

    在linux下建立无线热点并不像在windows下开启网络共享或者使用无线网卡驱动设置AP模式即可. linux下的无线共享要用到两个软件:hostapd(创建无线热点).dnsmasq(dns服务和 ...

  10. Python学习-13.Python的输入输出(二)

    在Python中,读取文件使用open函数 file=open(r'E:\temp\test.txt','r') var = file.read() print(var) file.close() 第 ...