在c++中使用SQlite
1. 生成 .lib 文件
从http://www.sqlite.org下载SQLite3.dll和SQLite3.def文件,以vc++6.0为例:
第一步:找到lib.exe所在目录
一般都在X:\Program Files\Microsoft Visual Studio\VC98\Bin下,在“运行”中输入cmd,然后切换到该目录下
第二步:使用LIB命令生成.lib文件
很多网页上都介绍,使用LIB /DEF:sqlite3.def /machine:IX86即可生成,可是我使用它时遇到一些小问题。
这里就不说了,说说应该注意的几点问题吧。第一个,你的sqlite3.def要是没有在 X:\Program Files\Microsoft Visual Studio\VC98\Bin下,需要写全路径;第二,为了清楚起见,你需要注明.lib文件的输出路径。下面我给出一个完整的命令行:X:\Program Files\Microsoft Visual Studio\VC98\Bin>LIB /out:D:\test\sqlite3.lib /MACHINE:IX86 /DEF:D:\test\sqlite3.def,然后在X:\test\e中可以找到sqlite3.lib和sqlite3.exp
如果生成的过程中提示缺少文件,去vc安装目录搜索,复制到lib.exe文件下就行了。
2.在C++中 使用sqlite
#include <iostream> #include <string> using namespace std; #include "sqlite/sqlite3.h" #pragma comment(lib,"sqlite/sqlite3.lib") int main() { sqlite3* db; int nResult = sqlite3_open("test.db",&db); if (nResult != SQLITE_OK) { cout<<"打开数据库失败:"<<sqlite3_errmsg(db)<<endl; return 0; } else { cout<<"数据库打开成功"<<endl; } char* errmsg; nResult = sqlite3_exec(db,"create table fuck(id integer primary key autoincrement,name varchar(100))",NULL,NULL,&errmsg); if (nResult != SQLITE_OK) { sqlite3_close(db); cout<<"创建表失败:"<<sqlite3_errmsg(db)<<endl; return 0; } string strSql; for (int i=0;i<100;i++) { strSql+="insert into fuck values(null,'heh');"; } cout<<strSql<<endl; nResult = sqlite3_exec(db,strSql.c_str(),NULL,NULL,&errmsg); if (nResult != SQLITE_OK) { sqlite3_close(db); cout<<"插入数据失败:"<<sqlite3_errmsg(db)<<endl; return 0; } return 0; }