什么是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 放入到运行目录即可。
如何创建连接?
//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语句?
// 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,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,'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; } }下次介绍如何进行更高级的操作, 如 内存数据库、指定优化参数等等。 原文链接:https://www.f2er.com/sqlite/201953.html