我打算在PonySE上把SQLite做为第一个保存"转换数据"的数据库, 所以今天小试了一把SQLite, 觉得它使用起来很简洁.
环境: VS2005 VC8.0
一. 准备工作:
(1)在SQLite的官方网站下载Windows平台下的3.5.0 版本的SQLite, 下载地址:
http://www.sqlite.org/sqlitedll-3_5_0.zip
压缩文件中包含了sqlite3.dll和sqlite3.def文件. 用LIB命令生成用于连接(LINK)使用的lib文件:
LIB /DEF:sqlite3.def /machine:IX86
这样就生成了:
sqlite3.lib 和 sqlite3.exp 两个文件
sqlite3.lib文件是我们连接程序所使用的.
(2)在SQLite官方网站下载SQLite3的源程序, 下载地址:
http://www.sqlite.org/sqlite-source-3_5_0.zip
解压出sqlite3.h文件
(3)将(1)和(2)中得到的文件放在sqlite3_lib目录(需要新建)中, 此时sqlite3_lib目录下应该有:
sqlite3.h
sqlite3.dll
sqlite3.lib
sqlite3.def
等文件.
二. 编写例子程序:
(1)打开VS2005创建一个新的项目:
项目类型: Visual C++
模板: Win32控制台应用程序
将"准备工作"中建立的 sqlite3_lib目录复制到你的项目所在的目录下, 然后在VS2005的IDE中对此项目进行如下的设置:
选择菜单: "项目" -> "(项目名称) 属性...", 在弹出的对话框中选择"配置属性"->"链接器"->"输入", 在"附加依赖项"中输入.sqlite3_libsqlite3.lib;
然后继续在对话框中选择"配置属性"->"C/C++"->"预编译头", 在"创建/使用预编译头"中选择"不使用预编译头";
然后"确定".
(2) 编写代码
#include <stdio.h> #include <stdlib.h> #include ".sqlite3_libsqlite3.h" static int _callback_exec(void * notused,int argc, char ** argv, char ** aszColName) { int i; for ( i=0; i<argc; i++ ) { printf( "%s = %s ", aszColName[i], argv[i] == 0 ? "NUL" : argv[i] ); } return 0; } int main(int argc, char * argv[]) { const char * sSQL = "select * from t1;"; char * pErrMsg = 0; int ret = 0; sqlite3 * db = 0; ret = sqlite3_open("./prog.db", &db); if ( ret != SQLITE_OK ) { fprintf(stderr, "Could not open database: %s", sqlite3_errmsg(db)); exit(1); } printf("Successfully connected to database "); sqlite3_exec( db, sSQL, _callback_exec, 0, &pErrMsg ); if ( ret != SQLITE_OK ) { fprintf(stderr, "SQL error: %s ", pErrMsg); sqlite3_free(pErrMsg); } sqlite3_close(db); db = 0; return 0; }
三. 编译运行.
注:
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。
官方网址: http://www.sqlite.org/