windows下vs2015编译POCO及使用poco操作sqlite

1.下载POCO

https://pocoproject.org/releases/
我们选择windows下的zip包下载,注意有两个版本

  1. poco-1.9.4-all.zip
  2. poco-1.9.4.zip
    其中不带all的是基础版本,只包含基本的poco类库,带all的是全功能版本,包含sqlite,opensll等等。

2.编译Poco C++

前提条件:
1)Poco C++源码(官网下载:点击我下载);
2)已经安装VS2015;
3)已经安装cmake。

1) 进入poco-1.9.4文件夹,即源码目录,创建vsproject文件夹
2)打开windows的命令行,进入vsproject目录,执行下面命令(注意:命令最后一句的 ”. .”):

mkdir cmake_build_x86
cd cmake_build_x86
cmake -G "Visual Studio 14 2015"  ..

如果要生成64位工程,执行如下命令:

mkdir cmake_build_x64
cd cmake_build_x64
cmake -G “Visual Studio 14 2015 Win64” ..

执行上述命令之后,会在vsproject目录生成 Poco.sln工程, 使用vs2015打开,编译 POCO的动态链接库
会在vsproject目录bin, lib生成 动态库.dll,及 链接库.lib

3.测试操作SQLite

创建测试工程 ,拷贝相关头文件,dll,及lib到工程目录

测试代码如下

// test_sqlite.cpp : Defines the entry point for the console application.
//

#include <iostream>

#include "Poco/SharedPtr.h"
#include "Poco/DateTime.h"

#include "Poco/Data/SQLite/Connector.h"
#include "Poco/Data/Session.h"
#include "Poco/Data/RecordSet.h"

#pragma comment (lib , "PocoFoundationd.lib")
#pragma comment (lib , "PocoDatad.lib")
#pragma comment (lib , "PocoDataSQLited.lib")

 
using namespace Poco::Data::Keywords;
using Poco::DateTime;
using Poco::Data::Session;
using Poco::Data::Statement;
using Poco::Data::RecordSet;
using Poco::Data::SQLite::Connector;

int main(int argc, char* argv[])
{
	Connector::registerConnector();

#if 1
	// create a session
	Session session("SQLite", "sample.db");

	// drop sample table, if it exists
	session << "DROP TABLE IF EXISTS Person", now;

	// (re)create table
	session << "CREATE TABLE Person (Name VARCHAR(30), Address VARCHAR, Age INTEGER(3), Birthday DATE)", now;

	// insert some rows
	DateTime bd(1980, 4, 1);
	DateTime ld(1982, 5, 9);
	session << "INSERT INTO Person VALUES('bob', 'beijing', 12, ?)", use(bd), now;
	session << "INSERT INTO Person VALUES('sam', 'shanghai', 10, ?)", use(ld), now;

	// a simple query
	Statement select(session);
	select << "SELECT * FROM Person";
#else
	// create a session
	Session session("SQLite", "test.db");
	Statement select(session);
	select << "SELECT * FROM user";
#endif // 0
	try
	{
		select.execute();
	}
	catch (const std::exception& e)
	{
		const char * buf = e.what();
		std::cout <<buf << std::endl;
	}

	// create a RecordSet 
	RecordSet rs(select);
	std::size_t cols = rs.columnCount();
	// print all column names
	for (std::size_t col = 0; col < cols; ++col)
	{
		std::cout << rs.columnName(col) << "\t";// << std::endl;
	}
	std::cout << std::endl;
	// iterate over all rows and columns
	bool more = rs.moveFirst();
	while (more)
	{
		for (std::size_t col = 0; col < cols; ++col)
		{
			std::cout << rs[col].convert<std::string>() << "\t";
		}
		std::cout << std::endl;
		more = rs.moveNext();
	}

	return 0;
}


工程下载: 点我下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lcyw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值