Qt数据库由QSqlDatabase::addDatabase()生成的QSqlDatabase只能在创建它的线程中使用, 在多线程中共用连接或者在另外一个线程中创建query都是不支持的几乎国内没有文章提到这个问题,这几天在做数据库压力测试时遇到了 假设有如下代码: bool openDatabase() { QSqlDatabase db; QString connectionName = "sqlite"; db = QSqlDatabase::addDatabase("…
Java 多线程详解(一)------概念的引入:http://www.cnblogs.com/ysocean/p/6882988.html 在上一篇博客中,我们已经介绍了并发和并行的区别,以及进程和线程的理解,那么在Java 中如何创建进程和线程呢? 1.在 Windows 操作系统中创建进程 在 windows 操作系统中,我们创建一个进程通常就是打开某个应用软件,这便在电脑中创建了一个进程.更原始一点的,我们在命令提示符中来做(我们以打开记事本这个进程为例): 第一步:windows+R,…
QtSql模块提供了一个平台无关且数据库无关的访问SQL数据库的接口. Qt中的每个数据库连接用一个QSqlDatabase对象来表示:Qt使用不同driver来和各种不同数据库的API进行通讯. QSqlQuery提供了直接执行任意SQL语句的特性:此外还提供了两个高层次的无需SQL命令的数据库接口:QSqlTableModel和QSqlRelationalTableModelSection 1. Connecting and Querying 在执行SQL命令前,必须先建立好同数据库的连接.…
上一篇博客<sqlite:多线程操作数据库“database is locked”解决方法>通过注册延时函数的方法来处理数据库被锁的问题.此方法固然能解决问题,但是在多个线程向数据库写入大量数据的情况下,延时会拖慢进度. 想出方法二: 1. 创建一个链表,链接如下格式的结构体,线程1,线程2,线程3......不直接改写数据库,而是把sql语句插入链表中: typedef struct { uint8_t *buf; uint32_t len; } sqlItem_t; 2. 创建一个独立的线…
前言支持内置数据库: 一.sqlite 1.在头文件中声明数据库对象 QSqlDatabase db; 2.在构造函数中定义对象(最好这样定义,因为对于db来说只需要addDatabase一次,否则多次addDatabase会报错) if(QSqlDatabase::contains("qt_sql_default_connection")) db = QSqlDatabase::database("qt_sql_default_connection"); else…
 前面的章节里,我们使用了下面的函数创建和取得数据库连接: void createConnectionByName(const QString &connectionName) { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", connectionName); db.setHostName("127.0.0.1"); db.setDatabaseName("qt"); //…
转自:http://blog.chinaunix.net/uid-25201977-id-3014100.html #include <QtSql>QT += sql QSqlDatabase类实现了数据库连接的操作QSqlQuery类用来执行SQL语句QSqlRecord类 封装数据库所有记录 第一:QSqlDatabase类QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  采用QSQLITE数据库,QMYS…
#include <QtSql>QT += sql QSqlDatabase类实现了数据库连接的操作QSqlQuery类用来执行SQL语句QSqlRecord类 封装数据库所有记录 第一:QSqlDatabase类QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  采用QSQLITE数据库,QMYSQL数据库有问题?db.setHostName("localhost"); //设置数据库主机名…
Qt数据库之添加MySQL驱动插件(1) 现在可用的数据库驱动只有3种,在Qt中,我们需要自己编译其他数据库驱动的代码,让它们以插件的形式来使用.下面我们就以现在比较流行的MySQL数据库为例,说明一下怎样在Qt Creator中添加数据库驱动插件.在讲述之前,我们先看一下Qt Creator中数据库的插件到底放在哪里. 我们进入Qt Creator的安装目录,然后进入相对应的文件夹下,比方我这里是 D:Qt2010.02.1qtpluginssqldrivers 在这里我们可以看见几个文件,如…
一.概述 Qt提供了一个类似JDBC的数据库接口,需要为每个可以连接的特定数据库提供驱动程序,可以通过 QStringList QSqlDatabase::drivers() 知道当前版本的Qt哪些驱动程序是可用的. Qt可以连接各种不同的数据库,比如MySql.Oracle等等.在这里,我们将主要讨论Qt连接它自带的SQLite数据库. 二.从Qt连接数据库 先思考一下我们使用数据库通常会有哪些操作—— 连接数据库 定义(或创建)数据库中的一个表 插入一行(以及更新行.删除行) 查询 OK,下…