Windows C++调用SQLite

来源:互联网 发布:淘宝上开代购店 编辑:程序博客网 时间:2024/05/21 06:55

简介

SQLite是一个自包含的、高可用、嵌入式的全功能数据库引擎,在各个领域,尤其是嵌入式领域有官方的使用,官方下载地址:https://www.sqlite.org/download.html,有支持各个操作系统的版本,以及源码,我们可以通过源码自己编译,也可以下载已经编译好的文件,这里以Win32为例,下载https://www.sqlite.org/2017/sqlite-dll-win32-x86-3190300.zip和https://www.sqlite.org/2017/sqlite-amalgamation-3190300.zip其中32位版本中存在两个文件sqlite3.def和sqlite3.dll,通过VC命令行工具lib /def:sqlite3.def导出sqlite3.lib文件,在sqlite-amalgamation文件中获取sqlite3.h文件,工程中通过包含sqlite3.h和导入sqlite3.lib即可使用sqlite3数据库,可以通过下载https://www.sqlite.org/2017/sqlite-tools-win32-x86-3190300.zip中的sqlite3.exe,使用命令行创建sqlite数据库,也可以通过其他工具来创建,这里推荐sqlite expert pro工具。

SQLite的数据类型

SQLite中只有如下几个内置的数据存储类型
存储类 描述

  • NULL:是一个 NULL 值。
  • INTEGER:是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。
  • REAL:是一个浮点值,存储为 8 字节的 IEEE 浮点数字。
  • TEXT:是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
  • BLOB:是一个 blob数据,完全根据它的输入存储。

    SQLite支持列的亲和类型概念。任何列仍然可以存储任何类型的数据,当数据插入时,该字段的数据将会优先采用亲缘类型作为该值的存储方式。下面是创建SQLite数据库时,各种数据类型对应的亲和类型:

    数据类型 亲和类型 INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT (UNSIGNED BIG INT) INT2 INT8 INTEGER CHARACTER(20) VARCHAR(255) VARYING CHARACTER(255) NCHAR(55) NATIVE CHARACTER(70) NVARCHAR(100) TEXT CLOB TEXT BLOB NONE REAL DOUBLE DOUBLE PRECISION FLOAT REAL NUMERIC DECIMAL(10,5) BOOLEAN DATE DATETIME NUMERIC
注意
  • BOOLEAN类型是以0和1来存储的
  • Date和Time类型可以存储为TEXT、INTEGER、REAL类型,SQLite提供了相应的日期时间API转换函数
  • 自增类型在SQLite中必须定义为INTEGER类型,不能是任何其他亲和类型

    SQLite API

    SQLite提供超过225个API函数,但是对于初始使用者来说,大多数的API都是可选的,关键API函数非常少也很容易使用,这里只描述关键的API函数,所有API函数的描述参考https://www.sqlite.org/c3ref/intro.html 。
    下面的两个对象和八个方法组成了SQLite接口的基本元素

  • sqlite3:数据库连接对象。通过slite3_open()函数创建,通过sqlite3_close()销毁

  • sqlite3_stmt: 预编译对象。通过sqlite3_prepare()函数创建通过sqlite3_finalize()函数销毁
  • sqlite3_open():创建一个新的或者打开一个已经存在的数据库连接对象
  • sqlite3_prepare():编译一个sql语句到字节码
  • sqlite3_bind():绑定一个值到原始SQL语句中的参数
  • sqlite3_step():执行一个预编译对象到第一条可用的记录结果,要获得第二条记录需要再次调用,对于不返回记录集的SQL语句,则只需要执行一次。
  • sqlite3_column():从预编译结果中获取每行中的每个列的值
  • sqlite3_finalize():销毁之前的预编译对象
  • sqlite3_close():销毁数据库连接对象
  • sqlite3_exec():是sqlite_prepare(), sqlite3_step(),sqlite3_colomn(),sqlite3_finalize()的一个封装,通过一个回调函数来处理返回的记录集。

SQLiteCPP

SQLiteCPP是SQLite数据库接口的一个封装,下载地址https://github.com/SRombauts/SQLiteCpp,使用时只需要将include文件夹中的头文件和src文件夹中的cpp文件包含到工程中来即可使用(当然也需要sqlite.h、sqlite.lib、sqlite.dll文件),example文件夹中包含了使用该库的代码实例,可以参考该实例,结合sqlitecpp源码来学校sqlite3接口的使用

原创粉丝点击