基础概念:

1、内存数据库标识":memory:";

2、[]中内容表示可选;

3、采用QSqlDatabase实现Sqlite的内存数据库和文件数据库交互。

一、将文件数据库加载到内存数据库(示例见第三节)

1、打开文件数据库获取所有的表名,[关闭文件数据库];

2、打开内存数据库,将文件数据库附加到内存数据库;

3、通过文件数据库表创建内存数据库表;

4、解除文件数据库附加到内存数据库。

二、将内存数据库保存到文件数据库(指新建文件数据库)(示例见第三四节)

1、打开新的文件数据库;

2、准备好内存数据库,获取内存数据库所有表名;

3、将文件数据库附加到内存数据库(注:此步骤依然是文件数据库附加到内存数据库);

4、通过内存数据库表创建文件数据库表;

5、解除文件数据库附加到内存数据库,[关闭文件数据库]。

三、文件数据库加载到内存数据库源码

void filedb2memdb(){QSqlDatabase diskdb = QSqlDatabase::addDatabase("QSQLITE", "DISK");diskdb.setDatabaseName("a.db");diskdb.open();QStringList tables = diskdb.tables();diskdb.close();QSqlDatabase::removeDatabase("DISK");QSqlDatabase memdb = QSqlDatabase::addDatabase("QSQLITE", "MEMORY");memdb.setDatabaseName(":memory:");memdb.open();QSqlQuery query(memdb);query.exec(QString("attach database '%1' as srcdb;").arg("a.db"));for each(QString name in tables){QString sql = QString("create table %1 as select * from srcdb.%2;").arg(name).arg(name);query.exec(sql);}query.exec("detach database srcdb;");
}

四、内存数据库保存到文件数据库源码

void memdb2filedb(){QSqlDatabase outdb = QSqlDatabase::addDatabase("QSQLITE", "DISK");diskdb.setDatabaseName("b.db");diskdb.open();QStringList tables = memdb.tables(); // 假设内存数据完整:memdb表示内存数据QSqlDatabase类型QSqlQuery query(memdb);query.exec(QString("attach database 'b.db' as desdb;"));for each(QString name in tables){QString sql = QString("create table desdb.%1 as select * from %2;").arg(name).arg(name);query.exec(sql);}query.exec("detach database desdb;");diskdb.close();QSqlDatabase::removeDatabase("DISK");
}

Qt Sqlite内存数据库和文件数据库交互相关推荐

  1. 文件数据库之sqlite 与内存数据库 redis

    内存数据库:大数据时代数据管理新宠 在 2012中国系统架构师大会上,笔者曾做过一份有关大数据的调查,其中一项"在众多的技术趋势中,您所关注的数据管理的新技术是什么?"的调查结果中 ...

  2. 辅助的写与数据库交互的XML文件的类

    现在企业级WEB应用中与数据库交互的XML文件都是通过插件自动生成的,不过有些时候修改比较老的项目的时候也是需要手动的来做这一动作的!如下代码就是一个实现上述的功能的辅助类,在此记录一下以备后用! p ...

  3. 轻便的客户端本地文件数据库 SQLite

    想在客户端程序中暂存一些数据(数据库较大,类别较多),不想用文件,因其不便于检索,操作也麻烦.于是去找一种轻便的文件数据库,看了一下,先看中了几种,1,Berkeley DB(开源,一些条件下收费,且 ...

  4. Python 与数据库交互的封装(MySQL,SQLServer,SQLite)

    文章目录 Python与数据库交互原理 安装包 SqlBase.py __init__函数 common函数 select函数 insert函数 delete函数 update函数 create函数 ...

  5. [Qt教程] 第21篇 数据库(一)Qt数据库应用简介

    [Qt教程] 第21篇 数据库(一)Qt数据库应用简介 楼主  发表于 2013-5-13 20:56:39 | 查看: 1403| 回复: 13 Qt数据库应用简介 版权声明 该文章原创于作者yaf ...

  6. [Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel

    [Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel 楼主  发表于 2013-5-21 14:33:47 | 查看: 869| 回复: 1 SQL查询模型QSqlQuery ...

  7. [Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句

    [Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句 楼主  发表于 2013-5-15 22:39:29 | 查看: 813| 回复: 0 利用QSqlQuery类执行SQL语 ...

  8. [Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动

    [Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动 楼主  发表于 2013-5-13 21:28:02 | 查看: 1616| 回复: 12 编译MyQSL数据库驱动 版权声明 该文章原创 ...

  9. VS+QT+SQLite实现简单的计算器

    VS+QT+SQLite实现简单的计算器 0. 计算器功能说明 0.1 计算器界面 0.2 历史记录模块 0.3 总体说明 1. 安装VS 1.1 下载VS_Community 1.2 安装VS 2. ...

最新文章

  1. 【NCEPU】吴丹飞:(CSAPP)计算机系统漫游
  2. 分布式缓存系统Memcached简介与实践(.NET memcached client library)
  3. 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目
  4. 统计学习方法第十五章作业:SVD矩阵分解 代码实现 及其在推荐的应用和矩阵压缩意义
  5. POJ 1833 排列【STL/next_permutation】
  6. 写给自己看的HTML、CSS、XHTML指南 八
  7. Hive的安装和使用以及Java操作hive
  8. 面试官:Java中线程是按什么顺序执行的?
  9. CCNP实验---EIGRP自动汇总
  10. extjs java 教程,JAVA开发工具 - 在IntelliJ IDEA下开发ExtJS应用指南
  11. 首个万人远程培训项目顺利启动
  12. tableexport 文件格式和扩展名不匹配_让信息检索更有效率!百度有哪些你不知道的隐藏玩法?...
  13. 怎么才能免费下载CSDN资源啊
  14. 《财富》2022全球500强榜单,沃尔玛九连冠,沙特阿美最赚钱,中国公司上榜最多 | 美通社头条...
  15. 用全开源的协同OA办公平台,可以自己搭建OA啦!
  16. 语音控制小车运动APP(基于百度语音识别)
  17. InputStreamReader和OutputStreamWriter 的区别和用法
  18. 【LSSVM数据预测】基于matlab灰狼算法优化LSSVM数据预测【含Matlab源码 433期】
  19. html静态网页制作的博客,[推荐]初学制作静态网页HTML推荐标准_
  20. BIOS、UEFI、Boot Loader都是些什么

热门文章

  1. js 获取滚动条的高度
  2. ELITEBOOK 惠普 限制功能
  3. Emacs自带教程的学习笔记
  4. 新零售讲堂之十年前错过了电子商务,十年后凭什么还要错过新零售!...
  5. ElasticSearch知识day02
  6. python stdout stderr_使用Python将stdout和stderr重定向到同一文件
  7. 企业该如何自主构建信息化管理系统?
  8. 第三章 多进程——操作系统最核心的视图
  9. 编码规范之美.佛语释道
  10. TM4C123GH6PM程序