MySQL++简单使用记录.md
#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的更多相关文章
- day39——SQL语句简单介绍、库、表、记录、安装mysql简单命令
day39 SQL语句简单介绍 库(增删改查) 查看数据库 show databases; 查看其中一个库 show create database db1; 创建数据库 create databas ...
- Mysql 函数使用记录(一)——DATEDIFF、CONCAT
当目前为止呢,个人对Mysql的函数没有进行过统一的学习使用,都是用到了再去学习.而近日开始学习Linux了,所以为了防止这段时期结束后,将此阶段期间遇到的Mysql函数遗忘,开始在此对其做一个简单的 ...
- Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(二)
然后是项目下的文件:完整的项目请看 上一篇 Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(一) 项目下的springmvc-servlet.xml配置文件: ...
- mysql简单主从复制(一)
MYSQL简单主从复制 master:172.25.44.1 slave:172.25.44.2 mysql5.7安装 master和slave均操作 准备rpm包:mysql-5.7.17-1.el ...
- CentOS7.4安装MySQL踩坑记录
CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...
- Gin实战:Gin+Mysql简单的Restful风格的API(二)
上一篇介绍了Gin+Mysql简单的Restful风格的API,但代码放在一个文件中,还不属于restful风格,接下来将进行进一步的封装. 目录结构 ☁ gin_restful2 tree . ├─ ...
- Mysql基本操作、C++Mysql简单应用、PythonMysql简单应用
MySql基本操作 -- 当指定名称的数据库不存在时创建它并且指定使用的字符集和排序方式 CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET UTF ...
- mysql简单优化思路
mysql简单优化思路 作为开发人员,数据库知识掌握的可能不是很深入,但是一些基本的技能还是要有时间学习一下的.作为一个数据库菜鸟,厚着脸皮来总结一下 mysql 的基本的不能再基本的优化方法. 为了 ...
- 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 ...
随机推荐
- Open Live Writer 代码插入插件测试
#-*-coding:utf-8-*- import urllib import json import sys import ssl ssl._create_default_https_contex ...
- Jquery.ajax 详细解释 通过Http请求加载远程数据
首先请看一个Jquery.ajax的例子 $.ajax({ type: "GET", url: "/api/SearchApi/GetResults", dat ...
- mysql由浅入深探究(二)----mysql用户操作
上一节我们完成了mysql的安装,现在我们将开启实战模式,完成一些基本的mysql操作.这节我们分为一些几个内容: mysql中用户新建 mysql中用户删除 mysql中用户修改 mysql中用户查 ...
- JAVA企业级开发-xml基础语法&约束&解析(04)
一.什么是xml html:超文本标记语言.它主要是用来封装页面上要显示的数据,最后通过浏览器来解析html文件,然后把数据展示在浏览器上.同样我们可以使用JS和DOM技术对html文件进行解析和操作 ...
- Elastic-job使用及原理
一.原理 elastic-job有lite版和cloud版,最大的区别是有无调度中心,笔者采用的是lite版本,无中心化. tips: 第一台服务器上线触发主服务器选举.主服务器一旦下线,则重新触发选 ...
- [Xcode 实际操作]六、媒体与动画-(7)遍历系统提供的所有滤镜
目录:[Swift]Xcode实际操作 本文将演示系统到底提供了多少滤镜供开发者使用,并了解每个滤镜都有哪些参数需要配置. 在项目导航区,打开视图控制器的代码文件[ViewController.swi ...
- 数学补天 By cellur925
质数 bool prime(int q) { ||q==) ; ) ; !=||q%!=) ; int cnt=sqrt(q); ;i<=cnt;i+=) !=||q%(i+)!=) ; ; } ...
- mac搭建TensorFlow环境
1.首先安装Anaconda,下载地址:https://www.anaconda.com/download/#macos,根据需要下载所需的版本. 2.安装TensorFlow,安装命令:pip in ...
- react-native-syan-image-picker的使用
传送门 第一种方式:link 第一步:安装 1. npm install react-native-syan-image-picker --save 2. react-native link re ...
- SWT的基本组件使用
1按钮组件(Button) (1)Button组件常用样式 SWT.PUSH按钮 SWT.CHECK多选按钮 SWT.RADIO单选按钮 SWT.ARROW箭头按钮 SWT.NONE默认按钮 SWT. ...