sqlite简介

sqlite 是一款轻量级的、基于文件的嵌入式数据库,2000年就已经诞生,经过7年多的发展,直到今天已经成为最流行的嵌入式数据库,包括google在内的公司 在其桌面软件中亦使用 sqlite 存储用户数据。由此可以看出,已经没有任何理由去怀疑sqlite的稳定性了。

sqlite的优势

1. 免配置,和access一样,只要把数据库文件通过ftp上传到服务器上就可以使用,不需要服务器的额外支持

2. 备份方便,因为只是一个文件,只要复制一份该文件,就能备份整个数据库

3. 虽然是轻量级数据库,但他支持最大 2tb 的单个库文件。

4. 快,无与伦比的快。经过实际测试,在几百万记录的情况下,sqlite的插入和查询速度和 mysql 不分上下,快于 sql server,10倍于 access (但这并不意味着它可以替代 sql server )

用QT操作sqlite

由于sqlite属于轻量级的数据库,不需要配置,不需要安装,也不需要管理员,所以也就没必要像操作mysql等数据库一样的设置主机,用户和密码了。样例如下:

#include <QApplication>
#include <QTextEdit>
#include <QString>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlDriver>
#include <QDateTime>
#include <QDebug>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QTextEdit display;
    display.resize(400, 160);
    display.show();  //下面进行数据库的设置
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  //使用sqlite数据库驱动 
    db.setDatabaseName("test");  //我们之前建立的数据库
bool ok = db.open();  //尝试连接数据库
if (ok)
    {  //这里用text已经成功连上数据库
        QSqlQuery query;  //新建一个查询的实例
if (query.exec("select * from student"))   //尝试列出 student 表的所有记录
        {  //本次查询成功
int numRows = 0;  //询问数据库驱动,是否驱动含有某种特性 
if (db.driver()->hasFeature(QSqlDriver::QuerySize))
            {
                numRows = query.size();  //如果支持结果影响的行数,那么直接记录下来
            }
else
            {
                query.last(); //否则定位到结果最后,qt 文档说,这个方法非常慢
                numRows = query.at() + 1;
                query.seek(-1);
            }
            QString name, age;
            display.append("==========================================="); 
while(query.next())
            {  //定位结果到下一条记录
                name = query.value(0).toString();
                age = query.value(1).toString();
                QString result = name + " " + age;
                display.append(result);
            }
            display.append("===========================================");
            display.append(QString("totally %1 rows").arg(numRows) );
        }
else
        {  //如果查询失败,用下面的方法得到具体数据库返回的原因
            QSqlError error = query.lastError();
            display.append("From mysql database: " + error.databaseText());
        }
    }
else
    {  //打开数据库失败,显示数据库返回的失败描述
        display.append("cannot open database.");
        display.append("Reason: " + db.lastError().databaseText());
    }
    QApplication::connect(&app, SIGNAL(lastWindowClose()), &app, SLOT(quit()));
return app.exec();
}

转载于:https://www.cnblogs.com/bennylam/archive/2010/03/22/1691355.html

Qt4访问sqlite数据库相关推荐

  1. Qt5 开发 iOS 应用之访问 SQLite 数据库

    开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1 源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.Andr ...

  2. QT 访问sqlite数据库

    QT 访问sqlite数据库 1.sqlite数据库安装 首先,通过sqlite3命令查看 sqlite数据库是否已经安装,若没有安装,则通过 sudo apt install 指令进行安装. 2.准 ...

  3. Qt访问SQLite数据库

    // 建立并打开数据库QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName(" ...

  4. idea中链接mysql查询_在Idea中编写Java程序连接查询Sqlite数据库

    1.使用SqliteSpy建立好数据库文件SqliteSpy运行界面 2.准备好一个空文件夹存放java工程和数据库文件,准备好数据库驱动jar包拷贝到文件夹中sqlite数据库文件和驱动 3.在Id ...

  5. QT读写Sqlite数据库三种方式

    QT对一些基本的数据库的访问封装,可谓是极大的方便的我们开发人员,现在我们就来说下QT对Sqlite这个数据库的读写,Sqlite是一个比较小型的本地数据库,对于保存一些软件配置参数或量不是很大的数据 ...

  6. 开发SQLite数据库常用的管理工具

    虽然说一直在用Sql Server2000和2005开发项目,但是某些时候想开发一些小的应用程序,用这种数据库就不合适了,想想可以用ACCESS做数据库, 但是一直觉得ACCESS是过去的东西,和C# ...

  7. 在Android中查看和管理sqlite数据库

    在Android中查看和管理sqlite数据库 在Android中可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看.android项目中的sqlite数据库 ...

  8. QT读写Sqlite数据库的三种方式

    QT对一些基本的数据库的访问封装,可谓是极大的方便的我们开发人员,现在我们就来说下QT对Sqlite这个数据库的读写,Sqlite是一个比较小型的本地数据库,对于保存一些软件配置参数或量不是很大的数据 ...

  9. python sqlite3 多线程_在python中多线程访问sqlite3数据库

    Python标准库中有sqlite3模块,可见对此数据库的认可.不过,此模块在使用时也有限制,同一个数据库连接,不能在不同线程中共享. import threading import sqlite3 ...

最新文章

  1. Spark的RDD 文件读取与保存
  2. 内存256KB设备也能人脸检测,微软提出用RNN代替CNN | NeurIPS 2020
  3. 蒙版遮住全屏(包括导航栏)
  4. 【存储知识学习】第一章存储系统的前世今生--《大话存储》阅读笔记
  5. Java Class 文件结构
  6. asp.net asp:TextBox控件绑定值后,获取不到新值问题解决方法
  7. Kubernetes之StatefulSet
  8. Qt 学习之路 :Qt 线程相关类
  9. mysql命令单词_mysql命令大全
  10. 【JAVA】在jar文件中引用图片等外部资源的问题
  11. matlab聚类分析工具箱,matlab聚类工具箱
  12. 什么是分布式负载均衡 ?
  13. 在传统软件公司十年深恶痛绝的感受(转)
  14. 桩基施工市场现状研究分析报告-
  15. 计算机无法找到扫描仪和照相机,我的电脑不显示扫描仪和摄像头的原因及解决方法...
  16. zeppelin报错jdk版本低
  17. 【asm基础】nasm和masm的一些区别
  18. 如何制作地图符号的实验报告
  19. skylake服务器CPU型号芯片,Skylake与Kaby Lake顶级处理器到底有多大差别?Intel i7-7700K评测...
  20. 计算机和计算机思维理论考试试题科目一,2020税务师考试答题方式、输入法要求及考试题型!...

热门文章

  1. php将pdf保存文件到本地,将生成的PDF文件存储在服务器上
  2. Linux学习笔记---更新软件源
  3. Java基础学习——安装JDK
  4. Redis——Java连接Redis
  5. C++中STL-set的用法
  6. centos7.5 安装apidoc全过程实测
  7. ajax请求返回结果进入success还是error
  8. 【须弥SUMERU】宜信分布式安全服务编排实践
  9. javascript-DOM-节点
  10. redis-cli批量删除时的坑