Mac下
Xcode中需要引入libsqlite3.0.tbd

Windows下
需要用到sqlite3.lib
 sqlite3官网上并没有sqlite3.lib可下载,要用需自编译生成。官网地址  
 如从sqlite3.7.5版本中得到sqlite3.lib,可用VS的LIB工具链接得到。
具体过程如下:   
- 先将sqlite-dll-win64-x64-3090100.rar解压到文件夹sqlite-dll-win64-x64-3090100,   
- 再将VS安装目录下VC中的LIB.EXE,LINK.EXE复制到sqlite-dll-win64-x64-3090100文件夹,**(lib.exe,link.exe地址:C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin)**   
- 在网上下载mspdb60.dll,复制到sqlite-dll-win64-x64-3090100文件夹,   
- 将Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE内的   mspdb110.dll复制到sqlite-dll-win64-x64-3090100文件夹。   
- 在命令窗内运行命令进入sqlite-dll-win64-x64-3090100文件夹   
- 执行LIB /DEF:SQLITE3.DEF /MACHINE:IX86或LIB /DEF:SQLITE3.DEF 即可生成sqlite3.lib文件。
- 然后将sqlite3.lib文件引入项目中
sqlite3.lib下载
或者,使用一个超简单的方法.直接从官网上下载源文件,然后把sqlite3.c, sqlite3.h 放入工程中~
主要函数
sqlite3_open(const char *filename,sqlite3 **ppDb)
- filename: 数据库文件的名字
- ppDb: sqlite的一个handle,之后通过这个handle对数据库做操作
sqlite3_exec(sqlite3*, const char *sql,int (*callback)(void*,int,char**,char**),void *,char **errmsg)
-  sqlite3: 一个已经打开的handle(通过sqlite3_open处理过)
-  sql:  需要执行的sql语句
-  int (*callback)(void*,int,char**,char**):  一个回调函数
-  void*:  一个回调参数
-  **errmsg  错误消息                                  
具体增删查改操作
创建数据库文件
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | sqlite3 *getDatabase()
 {
 sqlite3 *db=NULL;
 int rc;
 rc = sqlite3_open("test.db", &db);
 if( rc ){
 fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
 sqlite3_close(db);
 exit(1);
 }
 return db;
 }
 
 
 | 
建表
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | void createTable()
 {
 sqlite3 *db = getDatabase();
 const char * sql = "CREATE TABLE IF NOT EXISTS testTable(id integer primary key,a text,b text,c text);";
 char * pErrMsg = "0";
 int result = sqlite3_exec(db, sql, 0, 0, &pErrMsg );
 if( result != SQLITE_OK ){
 fprintf(stderr, "SQL error: %s\n", pErrMsg);
 sqlite3_free(pErrMsg);
 }
 sqlite3_close(db);
 }
 
 
 | 
增
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | void insertIntoDatabase()
 {
 sqlite3 *db = getDatabase();
 char * pErrMsg = 0;
 int result = sqlite3_exec(db, "INSERT INTO testTable(a,b,c) VALUES(1,2,3);", 0, 0, &pErrMsg);
 if(result == SQLITE_OK){
 printf("插入数据成功\n");
 }
 sqlite3_close(db);
 }
 
 | 
删
| 12
 3
 4
 5
 6
 7
 8
 
 | void deleteFromTable()
 {
 sqlite3 *db = getDatabase();
 char *pErrMsg = 0;
 sqlite3_exec(db, "delete from testTable where id = 2", NULL,NULL, &pErrMsg);
 sqlite3_close(db);
 }
 
 | 
查
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 
 | int select_callback(void * data, int col_count, char ** col_values, char ** col_Name)
 {
 
 int i;
 for( i=0; i < col_count; i++){
 printf( "%s = %s\n", col_Name[i], col_values[i] == 0 ? "NULL" : col_values[i] );
 }
 
 return 0;
 }
 void databaseQuery()
 {
 sqlite3 *db = getDatabase();
 char * pErrMsg = 0;
 sqlite3_exec(db, "select * from testTable;", select_callback, 0, &pErrMsg);
 sqlite3_close(db);
 }
 
 | 
输出很奇葩,需要根据自己项目做修改

改
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | void updateTable()
 {
 sqlite3 *db = getDatabase();
 char *pErrMsg = 0;
 sqlite3_exec(db, "update testTable set a = 666 where id = 1" , NULL, NULL, &pErrMsg);
 sqlite3_close(db);
 }
 
 
 |