Cppsqlite对sqlite的API进行了一次封装,让开发人员更加方便的使用sqlite。
1.准备一下
(1)Cppsqlite3.h 和Cppsqlite3.cpp
(2)sqlite3.h、sqlite3.lib和sqlite3.dll
在使用这个类的时候,你需要确保几件事情:首先你要下载上诉5个文件。其次就是在你的工程中引入,sqlite3.lib,最后要将Cppsqlite3.h 和Cppsqlite3.cpp添加到你的工程中。
2.打开数据库
代码:
@H_Cppsqlite3DB db; db.open("data.db"); db.close();
Cppsqlite3DB是一个核心类,之后的查询等数据库操作都要借助这个类。打开,关闭就像操作一个文件。
3.查询
代码:
502_46@
Cppsqlite3Queryquery=db.execQuery("select*fromtarget_table");
while(!query.eof())
{
cout<<"name:"<<query.getStringField("name")<<"age:"<<query.getIntField("age")<<endl;
query.nextRow();
}
query.finalize();
@H_Cppsqlite3Queryquery = db.execQuery("select * fromtarget_table"); while(!query.eof()) { cout<<"name:"<<query.getStringField("name")<<"age : "<<query.getIntField("age")<<endl; query.nextRow(); } query.finalize();
Cppsqlite3Query是一个查询返回对象,查询完后可以利用此类。这里就使用了Cppsqlite3DB的一个函数execQuery,只要将查询sql传入即可。
eof函数:判断是否还有数据;
nextRow函数:移到下一条记录;
getStringField函数:将获得相应字段的内容,以字符串形式返回;
getIntField函数:将获得相应字段的内容,以整形形式返回。
注意的是这个类产生之后要finalize。
4.数据库更改操作
代码:
502_46@
db.execDML("insertintotarget_table(name,age)values('xinxian',25)");
db.execDML("updatetarget_tablesetage=21wherename='xinxian'");
@H_db.execDML("insert into target_table(name,25)"); db.execDML("update target_table set age = 21 where name = 'xinxian'");
上面的代码就说明了一切,应该无需再解释。
5.statement对象
代码:
502_46@
Cppsqlite3Statementsmt=db.compileStatement("insertintotarget_table(name,age)values(?,?)");
for(inti=0;i<10;++i)
{
smt.bind(1,"test_");
smt.bind(2,i);
smt.execDML();
}
smt.finalize();
@H_Cppsqlite3Statementsmt = db.compileStatement("insert intotarget_table(name,age) values(?,?)"); for (int i = 0 ; i < 10; ++i) { smt.bind(1,"test_"); smt.bind(2,i); smt.execDML(); } smt.finalize();
Cppsqlite当然也提供Statement对象,用法也相当简单,参照上诉代码,应该不难理解。注意的是,Cppsqlite3Statement和Cppsqlite3Query一样,最后也要finalize。
6.异常处理
代码:
@H_try { code…… } catch(Cppsqlite3Exception & e) { }
将操作代码放入try里面,使用Cppsqlite3Exception & 来catch。
7.总结
笔者这篇文章简单入门介绍Cppsqlite,之后会介绍一些Cppsqlite一些高级特性,并结合sqlite本身的特点,讨论一下多线程操作,加密解密以及一些sqlite的限制。