资源简介
poco 访问数据库测试例子,编译环境:VS2013 数据库:MySQL poco版本:1.7.4完整版
代码片段和文件信息
/*步骤:
a. 创建会话(session)
b. 从DB中读写数据
c. 使用statements
d. 使用容器(Collection) (数据,集合...)
e. 使用limit限定
f. 如何使用复杂的数据类型(如何将一个C++对象映射到数据库的表
创建会话:Session create(const std::string& connectorKey const std::string& connectionString);
参数1:SQLite;MySQL;或者ODBC,支持Oracle SQLite DB2 SQLServer和PostgreSQL。
参数2:就是数据库文件的路径或者连接字符串
增:
对定义:std::string aName(“Peter“);
ses << “INSERT INTO 表名 VALUES(“ << aName << “)“ now;
或者ses << “INSERT INTO 表名 VALUES(?)“ use(aName) now;
查:
一般查找
std::string aName;
ses << “SELECT NAME FROM FORENAME“ into(aName) now; // aName的默认值为空字符串
ses << “SELECT NAME FROM FORENAME“ into(aName “default“) now;
匹配查找 先into后use 且不能使用常量 如4
std::string aName;
std::string match(“Peter“)
ses << “SELECT NAME FROM FORENAME WHERE NAME=?“ into(aName) use(match) now;
poco_assert (aName == match);
多字节匹配查找
std::string firstName(“Peter“;
std::string lastName(“Junior“);
int age = 0;
ses << “INSERT INTO PERSON VALUES (? ? ?)“ use(firstName) use(lastName) use(age) now;
ses << “SELECT (firstname lastname age) FROM Person“ into(firstName) into(lastName) into(age) now;
into语句允许定义一个默认值
ses << “SELECT (firstname lastname age) FROM Person“ into(firstName) into(lastName) into(age -1) now;
改:
session << “update Person set Address = ? WHERE Name= ?“ use(addr)use(name)now;
使用Statements:用于保存SQl语句,括号必须
std::string aName(“Peter“);
Statement stmt = ( ses << “INSERT INTO FORENAME VALUES(?)“ use(aName) );//括号必须
或者
Statement stmt(ses);
stmt << “INSERT INTO FORENAME VALUES(?)“ use(aName);
eg:
std::string aName(“Peter“);
Statement stmt = ( ses << “INSERT INTO FORENAME VALUES(?)“ use(aName) );
.
.
stmt.execute();
poco_assert (stmt.done());
容器使用:
默认支持以下容器类:
a. vector(数组): 无特别要求
b. set: 类型需要支持<操作符,注意:重复的key/value将忽略
c. multiset: 需支持<操作符
d. map: 需支持()操作符,并且按key返回对象,注意:重复的key/value将忽略
e. multimap: 需支持()操作符,并按key返加对象.
std::vector names;
ses << “SELECT NAME FROM FORENAME“ into(names) now;
Limit限定:
std::vector names;
ses << “SELECT NAME FROM FORENAME“ into(names) limit(50) now;
以上代码将只返回50行的数据。(当然也可能什么都不返回)并追加到 names这个容量中。如果想确保50行记录返回,需要设置limit的第二参数为true(默认为false):
std::vector names;
ses << “SELECT NAME FROM FORENAME“ into(names) limit(50 true) now;
Statement stmt = (ses << “SELECT NAME FROM FORENAME“ into(aName) lowerLimit(1) upperLimit(10));//限制范围
Statement stmt = (ses << “SELECT NAME FROM FORENAME“ into(aName) range(110));
类作为保存变量:
namespace Poco {
namespace Data {
template <>
class TypeHandler
{
.....
}
记录集(RecordSet)
a. 遍历数据表中所有的行与列
b. 获取各列的元信息,比如名称,类型,长度等.
Statement select(session);
select << “SELECT * FROM Person“;
select.execute();
RecordSet rs(select);
遍历:
bool more = rs.moveFirst();
while (more)
{
for (std::size_t col = 0; col < cols; ++c
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4907008 2015-02-25 23:20 MySql\Debug\libmysql.dll
文件 153088 2016-08-25 21:57 MySql\Debug\MySql.exe
文件 1358168 2016-08-25 21:57 MySql\Debug\MySql.ilk
文件 3869696 2016-08-25 21:57 MySql\Debug\MySql.pdb
文件 3788800 2016-08-25 15:03 MySql\Debug\PocoDatad.dll
文件 430080 2016-08-25 15:27 MySql\Debug\PocoDataMySQLd.dll
文件 3445248 2016-08-25 15:17 MySql\Debug\PocoFoundationd.dll
文件 8483 2016-08-25 21:58 MySql\MySql\main.cpp
文件 4369 2016-08-25 15:15 MySql\MySql\MySql.vcxproj
文件 945 2016-08-25 14:37 MySql\MySql\MySql.vcxproj.filters
文件 165 2016-08-25 13:31 MySql\MySql\MySql.vcxproj.user
文件 43515904 2016-08-25 22:18 MySql\MySql.sdf
文件 961 2016-08-25 13:31 MySql\MySql.sln
..A..H. 26112 2016-08-25 22:18 MySql\MySql.v12.suo
目录 0 2016-08-27 15:48 MySql\MySql\Debug
目录 0 2016-08-25 21:35 MySql\Debug
目录 0 2016-08-25 21:58 MySql\MySql
目录 0 2016-08-25 22:18 MySql
----------- --------- ---------- ----- ----
61509027 18
相关资源
- mysql_5.5.39_win_64位安装包
- mondrian foodmart access 数据库
- 订单管理系统项目(mvc)+mysql
- QT-SQLite数据库项目
- spring+springmvc+mybatis搭建的一个典当系
- [英文原版] Beginning.MySQL.pdf
- Navicat for MySQL32位无需安装,解压后即
- Oracle11g数据库管理员指南刘宪军
- ssm+mysql学生就业管理系统
- 销售管理系统
- IT交流论坛系统-数据库课设
- QT下实时抓包并发送数据包,Libcpap,
- mysql5.5.23版本
- mysql必知必会 pdf
- mysql-5.5.25-winx64 msi安装版
- Oracle 11g数据库基础教程 孙风栋
- Navicat for MySQL(含注册码)
- 基于SSM的在线学习在线课堂系统MySQ
- Go购网络商城
- SSH实现简单的后台管理系统
- SQL-Server-2008实用案例教程(完整版)
- struts2+hibernate+Mysql开发图书管理系统
- 超市订单系统(oracle和mysql素材)
- 学生成绩管理系统/学生信息管理系统
- nacivate for mysql
- mysql-connector-c-6.1.6-winx64.zip
- infobright-4.0.7-0-win_64-ice.zip
- mysql-connector-net-6.9.5.msi
- MYSQL文档完美中文版
- mysql-5.7-winx64_绿色(免安装)_bat_一键
评论
共有 条评论