SQLitePP 的使用(一)

22 篇文章 0 订阅
2 篇文章 0 订阅

什么是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;
	}
}

下次介绍如何进行更高级的操作, 如 内存数据库、指定优化参数等等。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值