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 ...
随机推荐
- 《精通Spring4.X企业应用开发实战》读后感第二章
- JQuery中查找父元素,子元素,追加元素,插入元素和删除元素 及其他常用方法
Jquery之所以强大,和其在获取对象时使用与css选择器兼容的语法有很大关系.而且它还兼容了CSS3的选择器,而且多出了不少. 所以jQuery的选择器也就变得很多很强大.就最基本的有以下四个: $ ...
- DIV文字水平垂直居中的方法
水平居中 text-align:center 垂直居中(vertical-align) vertical-align:middle; vertical-align时而没效果 然而真实使用的时候,我们会 ...
- hdu1688(dijkstra求最短路和次短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1688 题意:第k短路,这里要求的是第1短路(即最短路),第2短路(即次短路),以及路径条数,最后如果最 ...
- AcDbCurve of AcDbEntity
AcDb2dPolyline AcDb3dPolyline AcDbArc AcDbCircle AcDbEllipse AcDbLeader AcDbLine AcDbPolyline AcDbRa ...
- Django + Vue cli 3.0 访问静态资源问题
[问题背景] 用Vue clie 3.0的搭建得框架把我坑死了,在打包后,调用不到静态资源js,css,mp3等 [问题原因] vue cli 3.0打包后,dist目录下没有static目录,而Dj ...
- PAT甲级——1105 Spiral Matrix (螺旋矩阵)
此文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90484058 1105 Spiral Matrix (25 分) ...
- spingmvc实现在程序启动时调用数据库数据
直接上代码: package com.java.zxf.servlet; import java.text.ParseException; import java.text.SimpleDateFor ...
- 如何使用sass
Sass 是对 CSS 的扩展,让 CSS 语言更强大.优雅. 它允许你使用变量.嵌套规则.mixin.导入等众多功能, 并且完全兼容 CSS 语法. Sass 有助于保持大型样式表结构良好, 同时也 ...
- POJ-3177-RedundantPaths(边联通分量,缩点)
链接:https://vjudge.net/problem/POJ-3177#author=Dillydally 题意: 有n个牧场,Bessie 要从一个牧场到另一个牧场,要求至少要有2条独立的路可 ...