vs2010搭建sqlite3编译环境

来源:互联网 发布:从哪买高仿手表知乎 编辑:程序博客网 时间:2024/05/16 19:53

1. 首先从SQLite的官网http://www.sqlite.org/download.html上下载两个文件包sqlite-amalgamation-3070602.zip和sqlite-dll-win32-x86-3070600.zip

2. 解压amalgamation文件(里面包括四个文件,主要的是sqlite3.h)到D:/SQLite3/include,解压dll文件(sqlite3.def和sqlite3.dll文件)到D:/SQLite3/lib

3. 从VS2010的安装文件夹中的Visual Studio 10/VC/bin中找到LIB.exe和Link.exe,从Visual Studio 10中搜索得到mspdb100.dll文件,放入到D:/SQLite3/lib

4. 打开cmd窗口,转到D:/SQLite3/lib目录下,输入命令:LIB /DEF:sqlite3.def /machine:IX86,则会产生lib文件

5. 配置VS2010,VC++目录和库目录,分别包含include和lib文件夹

6. 写测试程序,测试是否成功配置:

#include <stdlib.h>  #include "sqlite3.h"  #undef SRC_FILE_NAME#define SRC_FILE_NAME "main.c"#define PRT_ERR(fmt, ...) printf("<error> "fmt,__VA_ARGS__)#define PRT_WARN(fmt, ...) printf("<warn> "fmt,__VA_ARGS__)#define PRT_INFO(fmt, ...) printf("<info> "fmt,__VA_ARGS__)#define OK 0#define ERROR -1int callback(void *params, int columnNum, char **columnVal, char **columnName){int i = 0;//printf("columnNum=%d\n",columnNum);for(i = 0; i < columnNum; i++){printf("%s:%s\t",columnName[i],columnVal[i]);}printf("\n");return 0;}int main(){      int ret = 0; char sql[512] = {0};    sqlite3 *db = NULL;char *errmsg = NULL;sqlite3_stmt *stmt;int i = 0;char ca[255];//open db    ret = sqlite3_open("demodb", &db);      if(ret != SQLITE_OK)      {  PRT_ERR("%s:%s:%d %s\n",__FUNCTION__,SRC_FILE_NAME,__LINE__,sqlite3_errmsg(db));          sqlite3_close(db);return ERROR;}  PRT_INFO("%s:%s:%d open database!\n",__FUNCTION__,SRC_FILE_NAME,__LINE__);//create tbl_snprintf(sql, sizeof(sql),"drop table if exists tbl1;"); ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);if(ret != SQLITE_OK){ PRT_ERR("%s:%s:%d %s\n",__FUNCTION__,SRC_FILE_NAME,__LINE__,errmsg);  sqlite3_free(errmsg);return ERROR;}_snprintf(sql, sizeof(sql),"CREATE TABLE IF NOT EXISTS tbl1""(id integer primary key autoincrement, name varchar(32), age integer);"); ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);if(ret != SQLITE_OK){ PRT_ERR("%s:%s:%d %s\n",__FUNCTION__,SRC_FILE_NAME,__LINE__,errmsg);  sqlite3_free(errmsg);return ERROR;}//insert tbl/*_snprintf(sql, sizeof(sql),"INSERT INTO tbl1 ""values(NULL, 'A', 20);"); ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);if(ret != SQLITE_OK){ PRT_ERR("%s:%s:%d %s\n",__FUNCTION__,SRC_FILE_NAME,__LINE__,errmsg);  sqlite3_free(errmsg);return ERROR;}*///prepare statementsqlite3_prepare_v2(db, "insert into tbl1(name,age) values(?,?)", -1, &stmt, 0);for(i = 10; i < 20; i++){sprintf(ca, "HELLO#%i", i);sqlite3_bind_text(stmt, 1, ca, strlen(ca), NULL);sqlite3_bind_int(stmt, 2, i);sqlite3_step(stmt);sqlite3_reset(stmt);}sqlite3_finalize(stmt);//query/*_snprintf(sql, sizeof(sql),"select datetime('now');"); ret = sqlite3_exec(db, sql, callback, NULL, &errmsg);if(ret != SQLITE_OK){ PRT_ERR("%s:%s:%d %s\n",__FUNCTION__,SRC_FILE_NAME,__LINE__,errmsg);  sqlite3_free(errmsg);return ERROR;}*/_snprintf(sql, sizeof(sql),"select * from tbl1;"); ret = sqlite3_exec(db, sql, callback, NULL, &errmsg);if(ret != SQLITE_OK){ PRT_ERR("%s:%s:%d %s\n",__FUNCTION__,SRC_FILE_NAME,__LINE__,errmsg);  sqlite3_free(errmsg);return ERROR;}   //close tbl    sqlite3_close(db);      return OK;}  


0 0
原创粉丝点击