VC++下使用SQLite数据库

    老师最近给的上机题目有点变态,特别是写到最后,是需要写学生管理系统。如果C语言结合文件来操作的话,估计会比较麻烦(对文件里字符串的增删改查我都没有什么好点的算法)。那就用数据库吧,我很自然的想到。

    前几天研究了Mysql与VC的交互,利用微软ODBC里面的一些API可以对数据库进行访问。不过用Mysql写这种小软件感觉还是太大,而且如果一台电脑既没联网也没安装MYSQL就不能使用我的程序了,所以我想找一款能嵌入程序里的数据库。

    sqlite就是一个嵌入式的轻型数据库,感觉与这种作业类型的题目真是天作之合。到时候提交给老师就是一个exe文件和一个db文件,老师就可以直接看到我的程序和运行结果~(笑)

    废话不多说(感觉自己太罗嗦了),我写这篇文章目的不是为了介绍C语言里sqlite的API(因为我自己现在暂时也没一一看过),而是先说说如何让VC和sqlite库连接起来(不连接怎么使用库里的函数)。

    官方提供了源文件的下载,我们就把源文件下载下来:sqlite-amalgamation-3071502.zip,下下来后解压发现里面有四个文件,"sqlite3.h"、"sqlite3.c"、"sqlite3ext.h"、"shell.c"。

    好,我们现在开始制作一个叫静态的lib文件,做好了告诉你有什么用:


    1.用VC(我用是VS2010)创建一个dll工程(我的就叫dll),即点击 文件 - 新建 - 项目 - win32项目 - dll(D) - 空项目

    2.将"sqlite3.h"、"sqlite3.c"、"sqlite3ext.h"拷贝到工程目录下,再一一添加到工程里,即点击 工程 - 添加 - 现有项

    点击查看原图

    3.以Release编译sqlite3.c,生成了dll文件,不过我们不用它。找到工程文件夹\dll\Release\sqlite3.obj,我们需要它!

    4.来到VS2010的安装目录下的VC\BIN目录(我的是D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin),把这个obj文件拷贝进去。再来到\Microsoft Visual Studio 10.0\Common7\IDE文件夹,找到其中的mspdb100.dll,mspdbcore.dll,mspdbsrv.exe,msobj100.dll文件,也拷贝到bin目录下。

    5.在bin目录下运行cmd,执行命令lib sqlite3.obj,完成obj的编译,生成一个2M多的sqlite3.lib文件,这就是我们的静态lib文件!!

    6.最后删除复制到bin文件夹下的dll文件(重要),我们只要这个sqlite3.lib.


    拿到了lib文件就好用了,以后写连接数据库的程序,只用把这个lib文件复制到工程目录下,并添加 - 新建项,选择这个lib文件。最后在代码里#include "sqlite3.h"(sqlite3.h在已经sqlite3.lib里,不用再把sqlite3.h拷贝到工程文件下)。

    现在就能用sqlite里面的API了~~

    到时候交作业直接把编译生成的exe文件和你的数据库文件xxx.db放在一起,其他人就能直接点击exe文件运行了。

赞赏

喜欢这篇文章?打赏1元

评论

郑春锋 回复

没有生成obj文件,怎么办啊

井盖 回复

第三条没有生成obj文件

masuz 回复

其实不用这么复杂,可以在同一个解决方案中创建Win32 DLL空项目(如项目名称为"sqlite3"),添加sqlite3源代码,然后修改项目的常规配置属性"配置类型"从“动态库(.dll)”改为“静态库(.lib)”,修改目标文件扩展名为(.lib)。在实际应用项目中添加"sqlite3"项目为引用项目(项目属性--通用属性--框架和引用),并把 .h头文件加到应用项目中即可。需要改Debug和Release两个配置。

学习 回复

能不能把连接数据库语言给我下

phithon 回复

@学习:不懂你说啥。语言是C语音呢,编译器是VS2010。

学习 回复

@phithon:我现在在用c++ MFC连接数据库,但不知道语言怎么写?麻烦你指教下

phithon 回复

@学习:http://www.leavesongs.com/C/sqlite3_1.html,http://www.leavesongs.com/C/sqlite3_2.html,http://www.leavesongs.com/C/sqlite3_3.html.
我不会单独指教东西,我要说的都在我博客里了,自己善用搜索。

学习 回复

@phithon:就请教一个问题,在MFC中添加数据库连接代码是在哪一块?是自己定义还是在BOOL CenergymanageApp::InitInstance()下添加?谢谢

狗爹 回复

学习了,写得真好

captcha