纯C/C++代码读写SQLite数据库
SQLite小巧易用,功能强大,非常适合开发文件型数据库应用的程序。而且SQLite官网也给了详细的开发文档,相关的开发教程也非常全面,应用编程接口使用也很简单。前期我毽爸程风介绍了在Qt中读写数据库的经验,今天我们来看看如何在纯C/C++环境中读写SQLite数据库。
工具/原料
SQLite3 windows版
SQLite3源代码
Devcpp集成开发环境
一、编译静态SQLite3数据库文件
1、实际上使用动态链接库来开发比较好,而且我们下载的sqlite3旯皱镢涛程序自身已经带有sqlite3.dll以及sqlite3.def文件,是可以使用VS的相关工具来生成lib文件以给我们编程弋讥孜求使用。奈何我不用VS,也不想为了这个再去安装一个,所以决定自己编译一个静态库来用,其实动态库也是一样。下面是sqlite3程序及源代码:
2、好的,下面我们来开始编译sqlite3静态库。打开devc++,新建一个静态链接库项目sqlite_lib。如下图:如果你不知道devc++如何使用,请参考我的另一篇经验。
3、我们把项目保存在一个我们事先建好的文件夹中,文件夹的名字也叫sqlite_lib。
4、我们将源代码中的sqlit3.h以及sqlite3.c拷贝至sqlite_lib文件夹。然后,在devcpp中的项目上右键,添加。
5、然后将sqlite3.h及sqlite3.c添加到项目。
6、之后,我们点击编译按钮或者运行菜单中的编译菜单或者直接按F9,开始编译。我们当前是在debug模式下编译的。
7、可以看到很顺利,连一个警告都没有,顺利编译完成。并生成了sqlite_lib.a静态库。
二、建立静态库的测试项目
1、其实编写相应的代码并不是很复杂,我们来看看sq盟敢势袂lite官网是怎么说的。我们可以看到,这个代码只调用了三个函数就完成了从创建、到读写最后关闭数据库的过程。采用的是直接调用sqlite提供的函数。
2、我们这里就直接将官网的代码拿来用用,看能不能正确的运行。我们在devcpp中新建一个控制台项目,见下图。项目保存在另外一个目录中,也叫sqlite_lib_demo。
3、我们将官网的示例代码粘贴到main.c文件中。同时,我们将sqlite3.h以及我们刚才生成的sqlite_lib.a一块拷贝至sqlite_lib_demo文件夹。
4、点击项目菜单,项目属性。打开项目选项窗口,切换到参数标签。
5、点击 加入库或者对象,选择sqlite_lib.a,然后依次点击 打开 确定按钮。
6、最后我们来编译项目。弹出了一个错误。提示 没有sqlite3.h这个文件或目录。这个问题简单,我们只需要将#include <sqlite3.h>改为#include "sqlite3.h"即可
7、重新进行编译。这次顺利的编译完成,运行一下看看。打印输出了错误提示,原来不能够直接运行。
三、测试程序
1、运行命令提示符,切换到我们的程序目录。然后,我们创建了一个名为mydata.db的数据库文件,创建了一个名叫student的表格,并插入了三条记录。程序看起来运行的很正常。
2、我们来验证下看看刚才的操作是不是真的没问题。可以看到程序工作的很好。
3、我们聪艄料姹再回头看看代码。先定义了一个sqlite3对象的指针:sqlite3 *db;然后调用sqlite3_open函数打开数据库,赋值给db。并返回是否打开成功。然后通过sqlite3_e旌忭檀挢xec函数来执行sql语句。如果中间出现问题,或者所有操作执行完后没有问题的话,就调用sqlite3_close来关闭连接。这里的sqlite3_exec函数的参数中有个函数指针,我们来看看官网的解释。
4、官网说如果sqlite3_exec的第三个参数为非NULL的话,它就会被调用用来输出SQL语句执行后的每一行结果。我们来看看是不是这样的。果然是这样。
5、最后,我们来生成一个release模式的静态库和可执行文件看看。一个700多K,一个900多K,确实不小。