#1.简介

MySQL++ is a powerful C++ wrapper for MySQL’s C API. Its purpose is to make working with queries as easy as working with STL containers.

#2.编译安装

下载MySQL++安装包 http://www.tangentsoft.net/mysql++/releases/mysql++-3.2.2.tar.gz

##2.1.ubuntu

###安装libmysqlclient
sudo apt-get install libmysqlclient-dev

locate libmysqlclient 从结果中可用看到libmysqlclient.so在/usr/lib/x86_64-linux-gnu/目录下

头文件:/usr/include/mysql

lib: /usr/lib/x86_64-linux-gnu

###编译
sudo ./configure --with-mysql-lib=/usr/lib/x86_64-linux-gnu
sudo make
sudo make install

/usr/local/include/mysql++
/usr/local/lib/mysqlpp.so

头文件:/usr/local/include/mysql++

lib: /usr/local/lib

###so的配置
/etc/ld.so.conf /usr/local/lib

##2.2.centos

###安装libmysqlclient
yum install mysql-devel
rpm -ql mysql-devel 从结果中可以看到libmysqlclient.so在/usr/lib64/mysql/目录下

头文件:/usr/include/mysql

lib:/usr/lib64/mysql/

###编译
./configure --prefix=/usr/local --enable-thread-check --with-mysql-lib=/usr/lib64/mysql
make
make install

头文件:/usr/local/include/mysql++

lib: /usr/local/lib
###so的配置
/etc/ld.so.conf /usr/local/lib

说明:mysql++的configure没有使用--enable-thread-check选项,因为我打算自己来管理多线程。
关于MySQL++多线程相关的内容可以看看http://tangentsoft.net/mysql++/doc/html/userman/threads.html。

#3.使用

主要使用的类有mysqlpp::Connection和mysqlpp::Query,前者用于跟mysql的连接,后者主要用于执行SQL语句。

##3.1 连接

示例代码:

bool throwExceptionOnError = false;
conn_ = new mysqlpp::Connection(throwExceptionOnError); conn_->set_option(new mysqlpp::ReconnectOption(true)); bool success = conn_->connect(g_config->DbName_,
g_config->DbServer_,
g_config->DbUserName_,
g_config->DbPassword_,
g_config->DbPort_);

Connection

##3.2 查询

MySql++支持三种查询: Query::execute(), Query::store(), Query::use()

execute()用于不返回数据的查询,该函数返回一个SimpleResult对象。如果只要成功与否的标识,可以使用Query::exec(),它返回一个bool值,标示执行成功与否。

store()用于用服务器获取数据,该函数返回一个StoreQueryResult对象。对象包含了整个查询结果,使用stl::map方式从里面取数据即可。

use()同样用于从服务器获取数据,不过该函数返回UseQueryResult对象。相比store()而言更节省内存,该对象类似StoreQueryResult,但是不提供随机访问的特性。use查询会让服务器一次返回结果集的一行。

Query对象的errnum()返回上次执行对应的错误代码,error()返回错误信息,affected_rows()返回受影响的行数。

示例代码:

query_ = new mysqlpp::Query(conn_, throwExceptionOnError, );

// exec()
bool query_ = new mysqlpp::Query(conn_, throwExceptionOnError, ); // store()
mysqlpp::StoreQueryResult res = query_->store(sql, strlen(sql));
int num = res.num_rows();
if (num <= ) {
return false;
} std::string a;
std::string b;
std::string c;
for (int i=; i<num; i++) {
res[i]["a"].to_string(a);
res[i]["b"].to_string(b);
res[i]["c"].to_string(c);
}

Query

#参考:

1.MySQL++ v3.2.2 User Manual http://tangentsoft.net/mysql++/doc/html/userman/index.html
2.MySQL++ doc http://tangentsoft.net/mysql++/doc/html/refman/annotated.html
3.MYSQL c api http://dev.mysql.com/doc/refman/5.5/en/c-api-function-overview.html

4.http://www.cnblogs.com/comoon/p/4104482.html

MySQL++简单使用记录.md的更多相关文章

  1. day39——SQL语句简单介绍、库、表、记录、安装mysql简单命令

    day39 SQL语句简单介绍 库(增删改查) 查看数据库 show databases; 查看其中一个库 show create database db1; 创建数据库 create databas ...

  2. Mysql 函数使用记录(一)——DATEDIFF、CONCAT

    当目前为止呢,个人对Mysql的函数没有进行过统一的学习使用,都是用到了再去学习.而近日开始学习Linux了,所以为了防止这段时期结束后,将此阶段期间遇到的Mysql函数遗忘,开始在此对其做一个简单的 ...

  3. Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(二)

    然后是项目下的文件:完整的项目请看  上一篇 Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(一) 项目下的springmvc-servlet.xml配置文件: ...

  4. mysql简单主从复制(一)

    MYSQL简单主从复制 master:172.25.44.1 slave:172.25.44.2 mysql5.7安装 master和slave均操作 准备rpm包:mysql-5.7.17-1.el ...

  5. CentOS7.4安装MySQL踩坑记录

    CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...

  6. Gin实战:Gin+Mysql简单的Restful风格的API(二)

    上一篇介绍了Gin+Mysql简单的Restful风格的API,但代码放在一个文件中,还不属于restful风格,接下来将进行进一步的封装. 目录结构 ☁ gin_restful2 tree . ├─ ...

  7. Mysql基本操作、C++Mysql简单应用、PythonMysql简单应用

    MySql基本操作 -- 当指定名称的数据库不存在时创建它并且指定使用的字符集和排序方式 CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET UTF ...

  8. mysql简单优化思路

    mysql简单优化思路 作为开发人员,数据库知识掌握的可能不是很深入,但是一些基本的技能还是要有时间学习一下的.作为一个数据库菜鸟,厚着脸皮来总结一下 mysql 的基本的不能再基本的优化方法. 为了 ...

  9. percona-toolkit 3.0.13 简单安装记录

    percona-toolkit 3.0.13 简单安装记录 环境:centos6.x mysql:8.0.17 yum -y install perl-DBIyum -y install perl-D ...

随机推荐

  1. 在VS中对WCF服务进行更新,但是配置文件没有更新解决办法

    取消下面的勾选框

  2. windows64下安装MySQLdb连接数据库

    MySQLdb是Python连接MySQL的模块,下面介绍一下源码方式安装MySQLdb: 1.首先要下载:http://www.codegood.com/downloads,由于我的python是2 ...

  3. js学习笔记2:循环和try/catch/throw

    今天学习了js的比较.if/else.switch/case和各种循环,这些东西每种语言都大同小异,没什么好看的,重点说一下js的循环. JavaScript 支持不同类型的循环: for - 循环代 ...

  4. NativeScript官方书籍:NativeScript in Action-用你现有技术构建移动应用程序

    大家好,我用nativescript做企业级移动应用开发一年多了.从最初只能看nativescript英文文档,到现在看到官方发布正式的书籍,感觉nativescript变得越来越好. 当然,在这个过 ...

  5. Java线程安全与多线程开发

    互联网上充斥着对Java多线程编程的介绍,每篇文章都从不同的角度介绍并总结了该领域的内容.但大部分文章都没有说明多线程的实现本质,没能让开发者真正“过瘾”. 从Java的线程安全鼻祖内置锁介绍开始,让 ...

  6. 51nod1117【贪心】

    思路:哈夫曼树~~哇塞,那么有道理. 利用堆维护:每次从堆里取两个最小加起来,然后还是最小的两个,最后只剩一根总的 #include <bits/stdc++.h> using names ...

  7. 51nod1282(最小表示法&&枚举)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1282 题意:中文题目诶- 思路:指针不可转,刻盘可转,显然,对 ...

  8. 第六章 “我要点爆”微信小程序云开发实例之爆文详情页制作

    爆文详情页制作 从首页中数据列表打开相应详情页面的方法: 给数据列表中每个数据项加一个点击事件,同时将当前数据项的id暂时记录在本地,然后跳转到详情页面detail goopen: function ...

  9. A JAX-WS web service is by itself a Singleton

    http://stackoverflow.com/questions/11096310/singleton-object-in-java-web-service http://stackoverflo ...

  10. python基本数据类型2——操作

    字符串 name = "alex" # 移除两边的空格 print(name.strip()) #strip不修改值 # 是否以"al"开头 print(nam ...