`

sqlite API 工具集 一

阅读更多

1.0 总览

SQLite3是SQLite一个全新的版本,它虽然是在SQLite 2.8.13的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API. SQLite3是为了满足以下的需求而开发的:

  • 支持UTF-16编码.
  • 用户自定义的文本排序方法.
  • 可以对BLOBs字段建立索引.

因此为了支持这些特性我改变了数据库的格式,建立了一个与之前版本不兼容的3.0版. 至于其他的兼容性的改变,例如全新的API等等,都将在理论介绍之后向你说明,这样可以使你最快的一次性摆脱兼容性问题.

3.0版的和2.X版的API非常相似,但是有一些重要的改变需要注意. 所有API接口函数和数据结构的前缀都由"sqlite_ "改为了"sqlite3_ ". 这是为了避免同时使用SQLite 2.X和SQLite 3.0这两个版本的时候发生链接冲突.

由于对于C语言应该用什么数据类型来存放UTF-16编码的字符串并没有一致的规范. 因此SQLite使用了普通的void* 类型来指向UTF-16编码的字符串. 客户端使用过程中可以把void*映射成适合他们的系统的任何数据类型.

2.0 C/C++ 接口

SQLite 3.0一共有83个API函数,此外还有一些数据结构和预定义(#defines). (完整的API介绍请参看另一份文档.) 不过你们可以放心,这些接口使用起来不会像它的数量所暗示的那么复杂. 最简单的程序仍然使用三个函数就可以完成: sqlite3_open(), sqlite3_exec(), 和 sqlite3_close(). 要是想更好的控制数据库引擎的执行,可以使用提供的sqlite3_prepare()函数把SQL语句编译成字节码,然后在使用 sqlite3_step()函数来执行编译后的字节码. 以sqlite3_column_开头的一组API函数用来获取查询结果集中的信息. 许多接口函数都是成对出现的,同时有UTF-8和UTF-16两个版本. 并且提供了一组函数用来执行用户自定义的SQL函数和文本排序函数.

2.1 如何打开关闭数据库

typedef struct sqlite3 sqlite3;
   int sqlite3_open(const char*, sqlite3**);
   int sqlite3_open16(const void*, sqlite3**);
   int sqlite3_close(sqlite3*);
   const char *sqlite3_errmsg(sqlite3*);
   const void *sqlite3_errmsg16(sqlite3*);
   int sqlite3_errcode(sqlite3*);

sqlite3_open() 函数返回一个整数错误代码,而不是像第二版中一样返回一个指向sqlite3结构体的指针. sqlite3_open() 和 sqlite3_open16() 的不同之处在于sqlite3_open16() 使用UTF-16编码(使用本地主机字节顺序)传递数据库文件名. 如果要创建新数据库, sqlite3_open16() 将内部文本转换为UTF-16编码, 反之sqlite3_open() 将文本转换为UTF-8编码.

打开或者创建数据库的命令会被缓存,直到这个数据库真正被调用的时候才会被执行. 而且允许使用PRAGMA声明来设置如本地文本编码或默认内存页面大小等选项和参数.

sqlite3_errcode() 通常用来获取最近调用的API接口返回的错误代码. sqlite3_errmsg() 则用来得到这些错误代码所对应的文字说明. 这些错误信息将以 UTF-8 的编码返回,并且在下一次调用任何SQLite API函数的时候被清除. sqlite3_errmsg16() 和 sqlite3_errmsg() 大体上相同,除了返回的错误信息将以 UTF-16 本机字节顺序编码.

SQLite3的错误代码相比SQLite2没有任何的改变,它们分别是:

#define SQLITE_OK           0   /* Successful result */
#define SQLITE_ERROR        1   /* SQL error or missing database */
#define SQLITE_INTERNAL     2   /* An internal logic error in SQLite */
#define SQLITE_PERM         3   /* Access permission denied */
#define SQLITE_ABORT        4   /* Callback routine requested an abort */
#define SQLITE_BUSY         5   /* The database file is locked */
#define SQLITE_LOCKED       6   /* A table in the database is locked */
#define SQLITE_NOMEM        7   /* A malloc() failed */
#define SQLITE_READONLY     8   /* Attempt to write a readonly database */
#define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite_interrupt() */
#define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */
#define SQLITE_CORRUPT     11   /* The database disk image is malformed */
#define SQLITE_NOTFOUND    12   /* (Internal Only) Table or record not found */
#define SQLITE_FULL        13   /* Insertion failed because database is full */
#define SQLITE_CANTOPEN    14   /* Unable to open the database file */
#define SQLITE_PROTOCOL    15   /* Database lock protocol error */
#define SQLITE_EMPTY       16   /* (Internal Only) Database table is empty */
#define SQLITE_SCHEMA      17   /* The database schema changed */
#define SQLITE_TOOBIG      18   /* Too much data for one row of a table */
#define SQLITE_CONSTRAINT  19   /* Abort due to contraint violation */
#define SQLITE_MISMATCH    20   /* Data type mismatch */
#define SQLITE_MISUSE      21   /* Library used incorrectly */
#define SQLITE_NOLFS       22   /* Uses OS features not supported on host */
#define SQLITE_AUTH        23   /* Authorization denied */
#define SQLITE_ROW         100  /* sqlite_step() has another row ready */
#define SQLITE_DONE        101  /* sqlite_step() has finished executing */
分享到:
评论

相关推荐

    LabVIEW使用SQLite数据库范例(需要自行下载SQLite的工具包)

    此外,LabVIEW范例可能还涵盖了查询数据的示例,这通常涉及使用`sqlite3_prepare_v2`创建一个`SELECT`语句,然后通过`sqlite3_step`获取结果集,并用`sqlite3_column_`系列函数获取每行数据的各个列值。 在实际应用...

    sqlite3API的封装

    SQLite3 API的封装是数据库开发中的一个重要环节,它允许开发者以更加简洁、高效的方式与SQLite数据库进行交互。在本文中,我们将深入探讨SQLite3 API的封装技术,以及如何通过实例来调用这些封装好的接口。 SQLite...

    SQLiteAPI接口学习总结.pdf

    SQLite API 接口是用于操作 SQLite 数据库的核心工具集,主要应用于嵌入式系统和轻量级应用程序中。本文将深入解析 SQLiteAPI 的初始化、关闭以及数据库连接等关键功能。 首先,SQLite 数据库的初始化是通过 `...

    SQLiteAPI接口学习总结[归纳].pdf

    总的来说,SQLite API提供了一个全面的工具集,使开发者能够灵活地在C语言环境中构建嵌入式数据库应用程序。通过熟练掌握这些接口,你可以实现从创建数据库到执行复杂的SQL查询,再到处理事务和错误的一切操作。要...

    sqlite3_SharpPlus.Sqlite.Developer_sqlitejdbc合集

    SQLite3 是一个开源的、轻量级的...总之,"sqlite3_SharpPlus.Sqlite.Developer_sqlitejdbc合集"是一个全面的SQLite3开发工具包,涵盖了数据库管理、Java和.NET环境下的数据访问,为开发者提供了便捷的数据库操作手段。

    labview控制sqlite的增删改查

    这通常通过调用SQLite的动态链接库(DLL)或使用LabVIEW的SQLite API来完成。创建连接时,需要指定数据库文件的路径,如果文件不存在,SQLite会自动创建一个新的数据库。 **2. 执行SQL语句** 增删改查操作主要通过...

    sqlite数据库操作工具类(含jsqlite.jar包)

    `DBManager.java`是一个数据库管理工具类,它封装了对SQLite数据库的基本操作,比如创建表、插入数据、查询数据、更新数据和删除数据等。使用这样的工具类可以使代码更整洁,提高了代码的可读性和可维护性。下面是...

    SQLite 安装包 sqlite3 及sqlite数据库jdbc jar包

    在Java中,你可以使用java.sql.*包中的API,通过加载SQLite的JDBC驱动,建立到SQLite数据库的连接,执行SQL语句,并处理结果集。 描述中的“2分不能再少了”可能是指这个资源的价值或者评分,意味着这个SQLite的...

    sqlite 数据库操作C# 工具类及使用实例

    接下来,我们创建一个SQLite数据库操作的工具类(例如命名为SqliteHelper),该类主要包含以下功能: 1. 连接数据库:使用`SQLiteConnection`类初始化数据库连接,如`new SQLiteConnection("Data Source=mydb....

    SQLite LabVIEW库文件

    SQLite LabVIEW库文件是专为在LabVIEW环境中与SQLite数据库进行交互而设计的工具集。SQLite是一个开源、轻量级的嵌入式数据库系统,它无需独立服务器进程,可以直接在应用程序内部运行,非常适合用于需要存储和检索...

    SQLite DLL合集.zip

    SQLite.Designer.dll是SQLite的设计器支持文件,它提供了在Visual Studio等IDE中设计SQLite数据库的可视化工具。通过这个库,开发者可以在项目中直接创建和修改数据库架构,比如创建表、设置约束等。 win-x86、...

    sqlite3和命令大全

    这个压缩包包含了一些与SQLite3相关的工具和文档,如SQLite3的动态链接库sqlite3.dll、可执行文件sqlite3.exe、分析器sqlite3_analyzer.exe以及sqlitediff工具等,同时还有一个关于SQLite3命令行操作的大全文档。...

    C++ SQLite vs2010

    为了简化C++与SQLite的交互,通常会创建一个封装类,比如`CSQLite`,该类包含了对SQLite API的封装,提供更符合C++习惯的接口。例如,可能包含如下方法:`OpenDatabase()`用于打开数据库,`ExecuteNonQuery()`用于...

    sqlite3 for delphi (支持delphi2009与delphi2010)

    1. **API接口**:Delphi版本的SQLite3提供了符合Pascal语言风格的API,使开发者可以方便地调用SQLite函数,如`sqlite3_open`、`sqlite3_exec`等,来执行数据库操作。 2. **组件支持**:在Delphi IDE中,SQLite3 for...

    sqlite3 C++ 完整一套打包

    1. **SQLite3 API**: SQLite3提供了一个C语言接口,C++开发者可以通过这个接口与SQLite数据库进行交互。API包括了打开、关闭数据库,创建、删除表,执行SQL语句等函数。例如,`sqlite3_open()`用于打开或创建数据库...

    sqlite3 驱动 for odbc

    3. 数据集处理:ODBC驱动程序会将查询结果返回为游标对象,允许用户逐行处理数据,或一次性加载整个结果集。 4. 兼容性:通过ODBC驱动,SQLite3可以与各种支持ODBC的应用程序无缝集成,如Excel、Python(使用pyodbc...

    SQLite3应用库C++

    2. **SQLite3头文件(.h)**:这些头文件定义了C++接口,供开发者在代码中调用SQLite3的API。例如`sqlite3.h`包含了创建、打开、关闭数据库,执行SQL语句,处理结果集等所有必要的函数声明。 3. **SQLite3可执行...

    SQLite 3.8.10.2

    - **shell.c** 提供了一个命令行界面工具,允许用户直接与SQLite数据库交互,进行创建、查询、更新和删除等操作。 - **sqlite3.def** 文件定义了SQLite的动态链接库导出函数,主要用于Windows平台。 - **sqlite3.dll...

    sqlite-java-tool-set-1.0

    SQLite是一个轻量级的、无...总的来说,“sqlite-java-tool-set-1.0”是一个经过改进和优化的SQLite数据库Java工具集,它简化了与SQLite的交互,提升了开发效率,是Java开发者在处理SQLite数据库时的一个强大助手。

    sqlite3 delphi封装

    总结来说,"sqlite3 delphi封装"是一个让Delphi开发者能够便捷地使用SQLite3数据库的工具集,它简化了API调用,提高了开发效率,并且兼容不同版本的Delphi。通过理解和使用这些组件,开发者能够构建出高效、稳定的...

Global site tag (gtag.js) - Google Analytics