SOCI是一个数据库操作的库,并不是ORM库,它仍旧需要用户编写sql语句来操作数据库,只是使用起来会更加方便,主要有以下几个特点
以stream方式输入sql语句
通过into和use语法传递和解析参数
支持连接池,线程安全
由此可见它只是一个轻量级的封装,因此也有更大的灵活性,后端支持oracle,mysql等,后续示例均基于mysql
安装
推荐使用cmake编译
cmake 现在的版本要> 2.8.9 要更新这个版本我现在更新到了3.8 最好下载最新代码
https://cmake.org/files/v3.8/cmake-3.8.1.tar.gz
tar xzvf cmake-3.8.1.tar.gz
cd cmake-3.8.1
./bootstrapmake
make install
cmake -version 看是否是3.8 如果不是要 ln 到 usr/bin 下边
(1). 下载 mysql-connector-c-6.1.10-src.tar 官网 或
http://download.csdn.net/detail/yangzm/9843365
cmake -G "Unix Makefiles"
make
make install
(2). 修改CMakeLists.txt 加入
set(MYSQL_INCLUDE_DIR "/usr/local/mysql/include")
set(MYSQL_LIBRARIES "/usr/local/mysql/lib/libmysqlclient.a")
再运行下边的内容:
git clone git@github.com:SOCI/soci.git
cd soci
mkdir build
cd build
cmake .. -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/opt/third_party/soci
make
sudo make install
编译出现:
enumeration value _xmltypenot handled in switch [-Werror=switch]
修改几个cpp 在switch 后边加上: default:break;
就可以编译过去了。
编译配置
include: /opt/third_party/soci/include /usr/local/mysql/include/
libpath:/opt/third_party/soci/lib64/
libname:soci_core soci_mysql
connection 设置
sql.open("mysql", "host=... db=test user=root password=123456");
基本查询
假设有如下表单
CREATE TABLE `Person` (
`id` int(11) unsigned NOT NULL AUTO_