SQLite是一款轻量级的本地数据库,支持Windows/Linux/Unix等等主流的操作系统,同时支持很多程序语言,比如 C++、C#、PHP、Java等
本篇主要讲述如何在Windows下编译和使用SQLite数据库。
一、编译准备
1、下载SQLite源代码:选择sqlite-amalgamation-X.zip,后面是版本号
二、编译过程
1、打开VC新建一个 Win32 DLL 空工程,命名为 sqlite3
2、解压sqlite-amalgamation-X.zip,把sqlite3.h、sqlite3ext.h、sqlite3.c添加到工程项目中
5、修改配置,在项目属性,常规下的配置类型,将动态库(.dll)改成静态库(.lib)
6、编译,然后在编译目录中找到sqlite3.lib
三、在项目中使用SQLite
1、新建一个win32 控制台应用程序,命名为sqlitetest
2、把sqlite3.h、sqlite3ext.h复制到工程目录下,并添加到工程项目中
3、把sqlite3.lib复制到工程目录下
4、修改sqlitetest.cpp,代码如下:
#include "stdafx.h" #include "sqlite3.h" #pragma comment(lib, "sqlite3.lib") void print_row(int n_values, char** values) { for (int i = 0; i < n_values; ++i) printf("%10s", values[i]); printf("\n"); } int print_result(void* data, int n_columns, char** column_values, char** column_names) { static int column_names_printed = 0; if (column_names_printed++ == 0) print_row(n_columns, column_names); print_row(n_columns, column_values); return 0; } int _tmain(int argc, _TCHAR* argv[]) { sqlite3 *db = NULL; char *errMsg = NULL; int rc = sqlite3_open("test.db", &db); if( rc ) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); getchar(); return 0; } else printf("open test.db successfully!\n"); rc = sqlite3_exec(db, "BEGIN TRANSACTION;", NULL, NULL, NULL); rc = sqlite3_exec(db, "CREATE TABLE students(number varchar(10), name varchar(10), " "sex varchar(6), age varchar(2));", NULL, NULL, NULL); rc = sqlite3_exec(db, "INSERT INTO students VALUES('00001','Mary','female','15');" "INSERT INTO students VALUES('00002', 'John', 'male', '16');", NULL, NULL, &errMsg); rc = sqlite3_exec(db, "SELECT students.* FROM students WHERE sex='female';", print_result, NULL, &errMsg); rc = sqlite3_exec(db, "SELECT students.* FROM students WHERE sex='male';", print_result, NULL, &errMsg); rc = sqlite3_exec(db, "COMMIT TRANSACTION;", NULL, NULL, NULL); printf("error code: %d\n", rc); printf("error message: %s\n", errMsg); sqlite3_close(db); getchar(); return 0; }
四、结束语
文章讲述如何在Windows下编译和使用SQLite,编译好的程序会以静态库的形式把SQLite集成到程序中。这样做的好处是SQLite集成到程序中,程序可以单独运行,不用多带一个dll文件,坏处就是程序文件体积会增大,显得臃肿。那么如果以dll的形式加载和使用SQLite,我将在下篇文章中讲述这个问题。