SQLitePP 的使用(一)

什么是SQLitePP ? 

   SQLitePP 是一个C++封装的 SQLite组件,开源、免费。目的是使用面向对象的方式来简化SQLite的使用,具有面向对象的访问方式。开源工程:http://sourceforge.net/projects/sqlite4pp/  欢迎各位开发人加入!

如何使用?

1. 从这里下载最新的版本,http://sourceforge.net/projects/sqlite4pp/files,目前仅有基于MSVC2010的版本,欢迎各位开发者加入,开发其他平台和版本。

2. 将 include 中的头文件 sqlitepp.h 加入到你的工程, lib中的 sqlitepp.lib 连接进去就好。

#include "sqlitepp.h"

3. 将 lib 下的 sqlitepp.dll 放入到运行目录即可。


如何创建连接?

如下代码所示,定义一个 连接DBConnection 对象, 然后调用 connect 方法,指定数据库地址即可。

//define a connection SQLitePP::DBConnection conn; // connect to a database int rc = conn.connect("D:\\mytestdb.db"); if (rc != 0 || !conn.isConnected()) { std::cout << conn.getErrorMessage() << std::endl; } else { std::cout << "we connected to the sqlite now!" << std::endl; }

如何执行DML语句?

如下代码所示,创建数据库表 tbl_test。

// define a command and set a command text SQLitePP::DBCommand cmd(&conn); cmd.setCommandText("create table tbl_test(id integer not null, name text, contact text)"); rc = cmd.execute(); // execute if (rc != 0) { std::cout << conn.getErrorMessage() << std::endl; } else { std::cout << "The table [tbl_test] has been created!" << std::endl; }
注:所有的 DBCommand 对象都需要绑定到 DBConnection 上。


如何执行SQL语句进行插入数据?

如下代码,插入数据到刚才建立的表中。

// insert data cmd.setCommandText("insert into tbl_test(id, name, contact) values(0, 'gavin', 'vxling@gmail.com')"); rc = cmd.execute(); // execute if (rc != 0) { std::cout << conn.getErrorMessage() << std::endl; return; }

如何查询结果?

如下代码片段所示,执行一个查询语句,查询到结果,然后将 列名打印出来, 然后将所有数据打印。

// execute a query cmd.setCommandText("select * from tbl_test"); rc = cmd.execute(); // execute if (rc != 0) { std::cout << conn.getErrorMessage() << std::endl; return; } // print field name for (int i =0; i < cmd.fieldCount(); ++i) { std::cout <<cmd.getFieldName(i) << "\t"; } std::cout << std::endl; // print all result while (cmd.fetchNext()) { std::cout << cmd.field(0) << "\t" << cmd.field(1) << std::endl; }
好了,到此为止,可以创建一个简单的文件数据库,然后进行写入、读取操作。附上所有代码:

#include "sqlitepp.h" #include <iostream> void simple_example(); int main(int argc, char **argv) { simple_example(); return 0; } // a simple example to use SQLitePP void simple_example() { //define a connection SQLitePP::DBConnection conn; // connect to a database int rc = conn.connect("D:\\mytestdb.db"); if (rc != 0 || !conn.isConnected()) { std::cout << conn.getErrorMessage() << std::endl; return; } else { std::cout << "we connected to the sqlite now!" << std::endl; } // define a command and set a command text SQLitePP::DBCommand cmd(&conn); cmd.setCommandText("create table tbl_test(id integer not null, name text, contact text)"); rc = cmd.execute(); // execute if (rc != 0) { std::cout << conn.getErrorMessage() << std::endl; return; } else { std::cout << "The table [tbl_test] has been created!" << std::endl; } // insert data cmd.setCommandText("insert into tbl_test(id, name, contact) values(0, 'gavin', 'vxling@gmail.com')"); rc = cmd.execute(); // execute if (rc != 0) { std::cout << conn.getErrorMessage() << std::endl; return; } // execute a query cmd.setCommandText("select * from tbl_test"); rc = cmd.execute(); // execute if (rc != 0) { std::cout << conn.getErrorMessage() << std::endl; return; } // print field name for (int i =0; i < cmd.fieldCount(); ++i) { std::cout <<cmd.getFieldName(i) << "\t"; } std::cout << std::endl; // print all result while (cmd.fetchNext()) { std::cout << cmd.field(0) << "\t" << cmd.field(1) << std::endl; } }
下次介绍如何进行更高级的操作, 如 内存数据库、指定优化参数等等。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值