纯C/C++代码读写SQLite数据库

SQLite小巧易用,功能强大,非常适合开发文件型数据库应用的程序。而且SQLite官网也给了详细的开发文档,相关的开发教程也非常全面,应用编程接口使用也很简单。前期我介绍了在Qt中读写数据库的经验,今天我们来看看如何在纯C/C++环境中读写SQLite数据库。

纯C/C++代码读写SQLite数据库

工具/原料

  • SQLite3 windows版
  • SQLite3源代码
  • Devcpp集成开发环境

一、编译静态SQLite3数据库文件

  1. 1

    实际上使用动态链接库来开发比较好,而且我们下载的sqlite3程序自身已经带有sqlite3.dll以及sqlite3.def文件,是可以使用VS的相关工具来生成lib文件以给我们编程使用。奈何我不用VS,也不想为了这个再去安装一个,所以决定自己编译一个静态库来用,其实动态库也是一样。

    下面是sqlite3程序及源代码:

    纯C/C++代码读写SQLite数据库
  2. 2

    好的,下面我们来开始编译sqlite3静态库。打开devc++,新建一个静态链接库项目sqlite_lib。如下图:

    如果你不知道devc++如何使用,请参考我的另一篇经验。

    纯C/C++代码读写SQLite数据库
  3. 3

    我们把项目保存在一个我们事先建好的文件夹中,文件夹的名字也叫sqlite_lib。

    纯C/C++代码读写SQLite数据库
  4. 4

    我们将源代码中的sqlit3.h以及sqlite3.c拷贝至sqlite_lib文件夹。然后,在devcpp中的项目上右键,添加。

    纯C/C++代码读写SQLite数据库
  5. 5

    然后将sqlite3.h及sqlite3.c添加到项目。

    纯C/C++代码读写SQLite数据库
  6. 6

    之后,我们点击编译按钮或者运行菜单中的编译菜单或者直接按F9,开始编译。

    我们当前是在debug模式下编译的。

    纯C/C++代码读写SQLite数据库
  7. 7

    可以看到很顺利,连一个警告都没有,顺利编译完成。

    并生成了sqlite_lib.a静态库。

    纯C/C++代码读写SQLite数据库
    END
  8. 7
    此文章未经授权抓取自百度经验

二、建立静态库的测试项目

  1. 1

    其实编写相应的代码并不是很复杂,我们来看看sqlite官网是怎么说的。

    我们可以看到,这个代码只调用了三个函数就完成了从创建、到读写最后关闭数据库的过程。

    采用的是直接调用sqlite提供的函数。

    纯C/C++代码读写SQLite数据库
  2. 2

    我们这里就直接将官网的代码拿来用用,看能不能正确的运行。

    我们在devcpp中新建一个控制台项目,见下图。

    项目保存在另外一个目录中,也叫sqlite_lib_demo。

    纯C/C++代码读写SQLite数据库
  3. 3

    我们将官网的示例代码粘贴到main.c文件中。同时,我们将sqlite3.h以及我们刚才生成的sqlite_lib.a一块拷贝至sqlite_lib_demo文件夹。

    纯C/C++代码读写SQLite数据库
  4. 4

    点击项目菜单,项目属性。打开项目选项窗口,切换到参数标签。

    纯C/C++代码读写SQLite数据库
  5. 5

    点击  加入库或者对象,选择sqlite_lib.a,然后依次点击  打开  确定按钮。

    纯C/C++代码读写SQLite数据库
  6. 6

    最后我们来编译项目。弹出了一个错误。提示  没有sqlite3.h这个文件或目录。

    这个问题简单,我们只需要将

    #include <sqlite3.h>

    改为

    #include "sqlite3.h"

    即可

    纯C/C++代码读写SQLite数据库
  7. 7

    重新进行编译。这次顺利的编译完成,运行一下看看。打印输出了错误提示,原来不能够直接运行。

    纯C/C++代码读写SQLite数据库
    END

三、测试程序

  1. 1

    运行命令提示符,切换到我们的程序目录。

    然后,我们创建了一个名为mydata.db的数据库文件,创建了一个名叫student的表格,并插入了三条记录。

    程序看起来运行的很正常。

    纯C/C++代码读写SQLite数据库
  2. 2

    我们来验证下看看刚才的操作是不是真的没问题。

    可以看到程序工作的很好。

    纯C/C++代码读写SQLite数据库
  3. 3

    我们再回头看看代码。

    先定义了一个sqlite3对象的指针:sqlite3 *db;

    然后调用sqlite3_open函数打开数据库,赋值给db。并返回是否打开成功。

    然后通过sqlite3_exec函数来执行sql语句。

    如果中间出现问题,或者所有操作执行完后没有问题的话,就调用sqlite3_close来关闭连接。

    这里的sqlite3_exec函数的参数中有个函数指针,我们来看看官网的解释。

    纯C/C++代码读写SQLite数据库
  4. 4

    官网说如果sqlite3_exec的第三个参数为非NULL的话,它就会被调用用来输出SQL语句执行后的每一行结果。

    我们来看看是不是这样的。

    果然是这样。

    纯C/C++代码读写SQLite数据库
  5. 5

    最后,我们来生成一个release模式的静态库和可执行文件看看。

    一个700多K,一个900多K,确实不小。

    纯C/C++代码读写SQLite数据库
    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部
相关标签数据库C语言