在windows下想使用c程序中使用sqlite,需要使用静态库.lib文件,官网上只提供sqlite3.dll和sqlite3.def文件,需要.lib才能使用。所以自己生成.lib文件。
1.在官方网站sqlite.org下载页面下载sqlite-dll-win32-x86-3071401.zip (298.71 KiB) 。
解压到某一文件夹下,如c:\sqlite3.
2.打开cmd命令行,执行
>cd c:\sqlite3
c:\sqlite3> lib /DEF:sqlite3.def
运行成功会有如下打印。
Microsoft (R) Library Manager Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserve
LIB : warning LNK4068: /MACHINE not specified; defaulting
Creating library sqlite3.lib and object sqlite3.exp
注意:如果不成功。如果提示lib不是内部或者外部命令,则在vc的安装目录下拷贝 vc98/bin/lib.exe 和link.exe到sqlite3目录下。如果提示缺少mspdb60.dll或者其他文件,则相应的找到拷贝到sqlite3目录下即可。
然后就是在相应的代码里引用了,如下:
我使用的是code blocks环境,在settings里打开compiler和debugger里找到linker settings 增加编译出来的sqlite3.lib库。
然后下载sqlite3的源码包里,拷贝其中的.h文件到源码目录下包含即可条用api了。
例子:
在目录下新建main.c,然后输入代码,例子做了简单的连接数据库(创建)->创建表->插入一条数据->查询显示。
#include#include "sqlite3.h" int main() { int rc = 0; int i = 0; sqlite3 *db = NULL; char *sql = NULL; char *err = NULL; rc = sqlite3_open("sqlite3test.db",&db); if(rc) { printf("\r\nopen database sqlite3test.db fail!\r\nERR: %s", sqlite3_errmsg(db)); sqlite3_close(db); return -1; } printf("\r\nopen database sqlite3test.db ok!"); sql = "create table stu(id int PRIMARY KEY,name text);"; rc = sqlite3_exec(db, sql, NULL, NULL, &err); if(SQLITE_OK != rc) { if(NULL != err) { printf("\r\nSQL1 ERR:%s", err); sqlite3_free(err); return -1; } } sql = "insert into stu values (1, 'zhangsan');"; rc = sqlite3_exec(db, sql, NULL, NULL, &err); if(SQLITE_OK != rc) { if(NULL != err) { printf("\r\nSQL2 ERR:%s", err); sqlite3_free(err); return -1; } printf("\r\n error insert"); } sql = "select * from stu;"; char **result; int nrow = 0, ncolumn = 0; rc = sqlite3_get_table(db, sql, &result, &nrow, &ncolumn, &err); if(SQLITE_OK != rc) { if(NULL != err) { printf("\r\nSQL3 ERR:%s", err); sqlite3_free(err); return -1; } printf("\r\n error select"); } printf("\r\nrow: %d ,column: %d", nrow, ncolumn); for(i=0;i<(nrow+1)*ncolumn;i++) { printf("\r\nresult[%d] : %s", i, result[i]); } sqlite3_free_table(result); sqlite3_close(db); return 0; }