在Qt5中SQLite3的使用

一、SQLite简要介绍

什么是SQLite

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。

就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件

为什么要用SQLite

SQLite作为轻量级开源数据库软件,目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快!

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE,WinRT)中运行。

SQLite下载

1.SQLite官方下载链接:SQLite Home Page
所需要的四个文件如下如图所示:

二、在Qt5中使用步骤

第一步:导入sqlite3相关文件

2. 新建两个文件夹:

db:用于存放数据库文件(.db)

lib:用于存放lib文件(好处:易于区分后面继续添加其他的lib文件)

第二步:打开qt 修改 .pro文件,添加SQL模块

其实在我们上上述引用lib的时候就已经把库添加进来了。

第三步:简单测试一下 打开、关闭数据库

cpp 复制代码
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    initDb();
}

Widget::~Widget()
{
    delete ui;
}

Widget::initDb()
{
    sqlite3 *sqldb=nullptr;
    //打开数据库
    int res = sqlite3_open("db/video.db", &sqldb);
    if(res == 0)//打开成功
    {
        qDebug()<<"open dataBase success!"<<endl;
    }
    else
    {
        qDebug()<<sqlite3_errcode(sqldb)<<endl;
        qDebug()<<sqlite3_errmsg(sqldb)<<endl;
    }

    //关闭数据库
    res = sqlite3_close(sqldb);
    if(res!=0)
    {
        qDebug()<<sqlite3_errcode(sqldb)<<endl;
        qDebug()<<sqlite3_errmsg(sqldb)<<endl;
    }
}
相关推荐
k09339 分钟前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
神奇夜光杯17 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
Themberfue19 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧20 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
测试界的酸菜鱼32 分钟前
Python 大数据展示屏实例
大数据·开发语言·python
晨曦_子画41 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
Black_Friend1 小时前
关于在VS中使用Qt不同版本报错的问题
开发语言·qt
CSUC1 小时前
【Qt】QTreeView 和 QStandardItemModel的关系
qt
希言JY1 小时前
C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
c语言·开发语言
残月只会敲键盘1 小时前
php代码审计--常见函数整理
开发语言·php