SQLite C/C++接口介绍(一)

前端之家收集整理的这篇文章主要介绍了SQLite C/C++接口介绍(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


sqlite CC++接口介绍


本文为sqlite C/C++接口的介绍。


早期版本的sqlite由于只支持5C/C++接口,故十分容易学习。随着sqlite功能的增长,新的C/C++接口随之加入,以至有超过200个不同的函数接口(API)。如此多的函数,会对新的使用者带来压力。幸运的是,大多数函数是十分专用的,不需要考虑。尽管有如此多的入口点,但核心的APIS仍然相当简单,易于编程。本文目的在于提供全部背景信息,以更容易理解sqlite是怎么样工作的。


另一篇独立的文档“Thesqlite C/C++ Interface”,描述了全部不同的sqliteC/C++ APIs。一旦读者理解了sqlite工作的基本原理,该文档可作为参考指南。本文档只是作为介绍,并不是完整的,也不是权威的,sqliteAPI参考。


1.0核心对象和接口


一个sql数据库引擎的主要任务是执行sql语句。为了达到该目的,开发者需要知道两个对象:


  • 数据库连接对象:sqlite3

  • 预置语句对象:sqlite3_stmt{sqlite引进了虚拟机器概念,参阅之,可以帮助理解预置语句对象。个人翻译为预置语句这个名词时,认为并不能贴切的传达本意。}


严格意义上来讲,预置语句对象并不是必须的了解。因为,可以使用sqlite3_exec sqlite3_get_table这样便利的封装接口。这些接口对预置语句对象进行封置,隐藏了预置语句对象。然而,充分利用sqlite,则需要理解预置语句对象。


数据库连接和预置语句对象由一个小型的C/C++接口函数集控制,列出如下:


  • sqlite3_open()

  • sqlite3_prepare()

  • sqlite3_step()

  • sqlite3_column()

  • sqlite3_finalize()

  • sqlite3_close()


上面列出的这六个C/C++接口函数和两个对象构成了sqlite的核心功能。开发者理解了他们,就有了用好sqlite的好基础。


注意:如上列出的函数只是概念上的,而不是实际的。这些列出的函数大都有不同的版本。如,上面只列出了sqlite3_open()这一个函数名,事实上有三个分开的函数以稍微不同的方式完成相同的功能。他们是sqlite3_open(),sqlite3_open16() sqlite3_open_v2()。列表中提到的函数sqlite3_column(),事实上并不存在该段程序。列中给出的函数sqlite3_column()代表着一族函数,这些函数可用于提取不同类型的列数据。


如下是这些核心接口作用的概述:



@H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@ @H_97_403@

sqlite3_open()

函数打开一个sqlite数据库文件,并建立连接,同时返回一个数据库连接对象。往往,一个应用调用的第一个sqlite API即为该函数。同时,该函数也是大多数其他sqlite API的先决条件。大多数sqlite API需要一个数据库连接对象的指针作为第一个参数同,同时这些sqlite API可以看作为数据库连接对象的成员函数,这些函数共同构建了数据库连接对象。

sqlite3_prepare()

函数sql文本转换为预置语句对象,同时返回一个指向该对象的指针。该接口函数需要一个先前通过调用sqlite3_open()获得的数据库连接对象的指针以及将要进行转换的sql语句字符串。该语句事实上并不执行sql语句。它仅仅是为执行sql语句做好准备。

假设每条sql语句即为一个小计算程序。sqlite3_prepare()的目的是将这些程序编译成对象编码。预置语句即为对象编码。sqlite3_step()接口函数将执行对象编码以获得结果。

注意,对于新的应用,并不推荐使用sqlite3_prepare()。一个新的备选函数sqlite3_prepare_v2()用来替代它。

sqlite3_step()

函数用来执行先前用sqlite3_prepare()接口创建的预置语句。该语句将执行,直到获得第一行结果。再次调用sqlite3_step()以获得下一行数据。持续调用sqlite3_step(),直到语句完成。若执行没有返回结果的语句(如,insert,update delete语句),只需要调用一次sqlite3_step()即可完成。

sqlite3_column()

函数从被sqlite3_step()执行的预置语句的当前结果行获得一列数据。每次当sqlite3_step()执行后,通过多次调用函数,以获得当前行的全部列数据。如上面提到,在sqlite API中并没有sqlite3_column()函数。对应的,我们在些称为sqlite3_column()指代的是一个整族的函数,这些函数从结果集中返回不同数据类型的结果。{请参阅sqlite的弱数据特性}。同时,也有一族的函数用来获得数据的大小(如果是字符串型和二进制大对象)和获得结果集中列的数目。

lsqlite3_column_blob()

lsqlite3_column_bytes()

lsqlite3_column_bytes16()

lsqlite3_column_count()

lsqlite3_column_double()

lsqlite3_column_int()

lsqlite3_column_int64()

lsqlite3_column_text()

lsqlite3_column_text16()

lsqlite3_column_type()

lsqlite3_column_value()

sqlite3_finalize()

函数用于销毁(析构)之前由调用sqlite3_prepare()生成的预置语句对象。每个预置语句对象必须使用sqlite3_finalize()来销毁,以避免内存泄露。

sqlite3_close()

该语句用于关闭由先前调用sqlite3_open()打开的数据库连接。所有与对应连接有关联的预置语句必须在关闭连接前完成。







猜你在找的Sqlite相关文章