centos7.2 安装poco

下载地址: https://pocoproject.org/releases/poco-1.7.8/poco-1.7.8p3-all.tar.gz

安装:

#!/bin/sh# 安装依赖库
# yum install openssl-devel mysql++-devel# 默认方式不支持mysql
#./configure --everything --omit=Data/ODBC,Data/SQLitemake -s#make -s install


具体安装时要使用什么参数,可执行 "./configure --help" 查看!


安装后,可以编写程序进行测试了。

如果程序运行时,发现找不到运行的动态库,记得将/usr/local/lib 添加到库的搜索 目录下,并执行ldconfig

---------------------------------------------------------------------------------------------------------------------------------

以下为测试程序:main.cpp

#include <iostream>
#include "Poco/String.h"
#include "Poco/Format.h"
#include "Poco/Exception.h"
#include "Poco/Data/StatementImpl.h"
#include "Poco/Data/MySQL/Connector.h"
#include "Poco/Data/MySQL/MySQLException.h"
#include "Poco/Data/Session.h"
#include "Poco/Data/SessionPool.h"
#include "Poco/Data/SessionFactory.h"
#include "Poco/Data/LOB.h"
#include "Poco/Data/MySQL/MySQLStatementImpl.h"
#include "Poco/DateTime.h"
#include "Poco/Data/RecordSet.h"
#include "Poco/Data/Column.h"using namespace Poco::Data::Keywords;
using namespace Poco::Data;using Poco::Data::Session;
using Poco::Data::MySQL::ConnectionException;
using Poco::Data::MySQL::StatementException;
using Poco::NotFoundException;
using Poco::Data::Statement;
using Poco::DateTime;
using Poco::Data::RecordSet;//给出访问数据库的信息
std::string _dbConnString = "host=192.168.2.2;port=3306;"
"user=root;password=123456;"
"db=test;"
"compress=true;auto-reconnect=true";int main(int argc, char** argv)
{MySQL::Connector::registerConnector();//与数据库建立一个连接池Poco::Data::SessionPool pool(MySQL::Connector::KEY, _dbConnString,1,32,10);//从数据库存连接池中获得一个数据库连接Poco::Data::Session ses(pool.get());//如果与数据库建立会话成功,输出连接信息if(ses.isConnected())std::cout << "*** Connected to " << '(' << _dbConnString << ')' << std::endl;//如果有为名ddjj的表,先删除,方便下面调试ses << "DROP TABLE IF EXISTS ddjj", now;//把查询结果存储到容器中std::vector<std::string> names;ses << "show databases", into(names), now;//输出查询结果,此处列出所有数据库名称for (std::vector<std::string>::const_iterator it = names.begin(); it != names.end(); ++it){std::cout << *it << std::endl;}// 建立一个表,名为ddjj,字段名:name,birthses << "create table ddjj(name VARCHAR(20),birth VARCHAR(20));", now;//实现数据纪录的插入DateTime bd(1980, 4, 1);DateTime ld(1982, 5, 9);ses << "INSERT INTO ddjj VALUES('Bart Simpson',  ?)", use(bd), now;ses << "INSERT INTO ddjj VALUES('Lisa Simpson',  ?)", use(ld), now;//实现查询的方法,并输出查询结果std::vector<std::string> names1;ses << "select * from ddjj where name like 'Bart Simpson' ",into(names1),now;for (std::vector<std::string>::const_iterator it = names1.begin(); it != names1.end(); ++it){std::cout << "*** tables: " << *it << std::endl;}Statement select(ses);select << "SELECT * FROM ddjj";select.execute();//创建纪录集RecordSet rs(select);std::size_t cols = rs.columnCount();//输出列名for (std::size_t col = 0; col < cols; ++col){std::cout << rs.columnName(col) << std::endl;}//输出所有查询到的结果bool more = rs.moveFirst();while (more){
#if 0	// 通过下标取数据for (std::size_t col = 0; col < cols; ++col){std::cout << rs[col].convert<std::string>() << "\t";}
#else	// 通过列名取数据printf("name=%s, birth=%s", rs["name"].convert<std::string>().c_str(), rs["birth"].convert<std::string>().c_str());
#endifstd::cout << std::endl;more = rs.moveNext();}ses.close();MySQL::Connector::unregisterConnector();return 0;
}

Makefile

CC = gcc
CXX = g++
RM = rm -fINCLUDE=-I/usr/include/mysql
LDFLAGS = -lPocoData -lPocoFoundation -lPocoDataMySQL
CFLAGS = -g -std=c++11
ALL = aa: main.o$(CXX) -o $@ $^ $(CFLAGS) $(LDFLAGS)%.o: %.cpp$(CXX) -c $< $(CFLAGS) -o $@ $(INCLUDE)clean:$(RM) $(ALL) *.o

编译过程:

[zcm@localhost poco1]$ make
g++ -c main.cpp -g -std=c++11 -o main.o -I/usr/include/mysql
g++ -o a main.o -g -std=c++11 -lPocoData -lPocoFoundation -lPocoDataMySQL


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP 错误处理

<% Option Explicit------------- 错误处理&#xff1a; ------------- 1.需在每一行可能发生错误的代码上使用"On Error" 和 "If Err.Number <> 0 Then ..." 结构。 注意作用域&#xff01; 2.On Error语句: 启用或禁用错误处理程序* On Error G…

【云计算】K8S DaemonSet 每个node上都运行一个pod

Kubernetes容器集群中的日志系统集成实践 Kubernetes是原生的容器编排管理系统&#xff0c;对于负载均衡、服务发现、高可用、滚动升级、自动伸缩等容器云平台的功能要求有原生支持。今天我分享一下我们在Kubernetes集群中日志管理的实践方案。在这个方案中&#xff0c;除了Doc…

struct结构体初始化3种方法

From: http://blog.csdn.net/thdxs/article/details/8204118 struct是C中重要的ADT。但是在一般讲C的书中&#xff0c;往往只介绍了struct的定义、顺序初始化及位域。      为了方便后面的介绍&#xff0c;先定义一个struct类型&#xff1a;    struct User    {    …

OI基础系列之最大子数组问题

OI基础系列之最大子数组问题 ——Edward2414 oi退役了&#xff0c;虽然没取得多少成绩&#xff0c;也算是走过一会的人了。我相信绝大多数oi党都是自学成才&#xff0c;在此&#xff0c;我感谢那些把自己所学写到博客里的前辈们&#xff0c;没有你们&#xff0c;我不可能…

面向对象组合继承

function Person(name,sex,age){ this.name name; this.sex sex; this.age age;}Person.prototype.eat function(){ console.log("每个人都会吃饭");}function Programmer(name,sex,age){ this.habby "看书"; Person.call(this,name,sex,…

企业微信报错https:// open.work.weixin.qq.com/devtool/query?e=60020

企业微信报错&#xff1a; not allow to access from your ip, hint: [1667358733640290333963300], from ip: 180.164.177.83, more info at https:// open.work.weixin.qq.com/devtool/query?e60020 企业微信对60020处理&#xff1a;我是没太搞懂这个 企业微信报错60020解决…

std::string删除首字符

查了下std::string的使用手册&#xff0c;才知道string删除字符只有erase成员方法&#xff0c;但是这个方法提供了3个重载函数&#xff0c;如下&#xff1a; string& erase ( size_t pos 0, size_t n npos ); iterator erase ( iterator position ); iterator erase ( it…

Mybatis各种模糊查询及#和$区别

模糊查询&#xff1a; 工作中用到&#xff0c;写三种用法吧 sql中字符串拼接SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT(%, #{text}), %); 使用 ${...} 代替 #{...}SELECT * FROM tableName WHERE name LIKE %${text}%; 程序中拼接 Java // or String searchText …

Tomcat 配置支持APR

对ARP支持&#xff0c;需要安装以下库&#xff1a; APR libraryJNI wrappers for APR used by Tomcat (libtcnative)OpenSSL libraries其中JNI wrappers(libtcnative)安装依赖另外两项&#xff0c;以及Java headers.&#xff08;It depends on APR, OpenSSL, and the Java head…

[算法] 麻将序数牌组合方案

// 环境: centos7.2, g v4.8.5#include <iostream> #include <unistd.h> #include <stdio.h> #include <string.h> #include <vector> #include <map>using namespace std;enum CombineType {CombineType_Null 0, // 单牌CombineType_Dui…

swagger接口数据上传

后端接口参数格式&#xff1a; 1.正常大对象传参&#xff1a; 2.正常参数传参&#xff1a; 3.第三者传参&#xff1a;

java中单例模式的3种实现

1 饿汉式单例类.在类初始化时&#xff0c;已经自行实例化 class EagerSingleton { private static final EagerSingleton m_instance new EagerSingleton(); /** * 私有的默认构造子 */ private EagerSingleton() { } /** * * 静…

webstrom打开多个项目,webstrom常用快捷键

1.webstrom打开多个项目默认情况下一次只能打开一个项目&#xff0c;如果需要打开多个就按照下面的方法File -> settings -> Directories -> Add Content Root 中添加你需要的工程目录。2.加速 禁用多余的插件&#xff0c;关掉没必要的代码检查项。 webstorm慢的原因主…

[算法] vector删除元素

#include <iostream> #include <algorithm>using namespace std;bool IsOdd (int i) { return i % 2 1; } // 奇数void test_remove(vector<int>& v) {auto del remove(v.begin(), v.end(), 9); // 删除所有的9v.erase(del, v.end());//v.erase(del);…

XMLHttpRequest 跨域请求获取 Response Header

XMLHttpRequest 跨域请求获取 Response Header xhr.getAllResponseHeaders() // 获取所有的headerxhr.getResponseHeader("key") // 获取指定的header

ASP.NET MVC3数据绑定到VIEW的方式

ASP.NET MVC3数据绑定到VIEW的方式 1、 指定页面数据的强类型Module 数据类型是强类型&#xff0c;编译时报错&#xff0c;运行效率高 Action: public ActionResult Index() { var _instructors new List<Instructor>( new Instructor[] { new Instructor { Name &…

值得一做》关于并查集的进化题目 BZOJ1015(BZOJ第一页计划)(normal-)

这道题和以前做过的一道经典的洪水冲桥问题很像&#xff0c;主要做法是逆向思维。&#xff08;BZOJ第10道非SB题纪念&#xff09; 先给出题目 Description 很久以前&#xff0c;在一个遥远的星系&#xff0c;一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天&#xff0c;…

git操作之pull拉取远程指定分支以及push推送到远程指定分支

一、pull操作 1、将远程指定分支 拉取到 本地指定分支上&#xff1a; &#xff08;注&#xff1a;命令里的尖括号<>只是包裹中文的标识&#xff0c;方便你看的&#xff0c;实际使用时不用写&#xff0c;不过冒号需要&#xff09; git pull origin <远程分支名>:…

[算法] 求排列组合: 从n个数中任选m个数组成一个新数

#include <iostream> #include <vector>using namespace std;// 求排列组合算法: C(n, m): 从n个数中任选m个数组成一个新的数, 求有多少种组合, 分别是什么 // 从v[]里任选m个元素组成一个组合, 与顺序无关 template<class T> vector<vector<T>&g…

Functional ProgrammingLazy Code:被我忘记的迭代器

本文给出一个Functional Programming和Lazy Code的一个例子。跟着思路走&#xff0c;关键的地方会有相应的说明。 我们想实现一个判断"素数"的小程序&#xff0c;如下&#xff1a; using System;namespace FunctionalProgramming {class Program{static void Main(st…