SOCI
SOCI是一个C++库,用来访问数据库。githu链接点击这里。这个库需要通过源码编译,有对数据库client的依赖,所以本地需要安装了的需要的数据库client。SOCI支持的数据库client如下:
- DB2
- Firebird
- MySQL
- ODBC with specific database driver
- Oracle
- PostgreSQL
- SQLite 3
我的本机电脑安装的MySQL,所以下面以针对MySQL的编译过程进行说明。
准备
- windows 7 64bit
- visual studio 2010
- mysql-5.7.13-winx64
- soci源码
- cmake
编译步骤
1. 代码下载
## 先下载SOIC源码
git clone https://github.com/SOCI/soci.git
## 如果不想直接使用master分支,可以切换到release版本
git checkout v4.0.1
2. 将代码配置为windows visual studio编译环境。SOCI有个好处就是,可以通过cmake生成各种平台的编译环境。
## 1. cmake的安装路径,根据使用情况而定,这里是D:\Program Files\cmake\win\bin\cmake.exe
## 2. -G 参数指定visual studio的版本
## 3. SOCI可以指定BOOST的支持,因为我本地没有下载BOOST所以就不设置了
## 4. 因为我要编译支持MySQL所以指定-WITH_MYSQL
## 5. MYSQL_DIR指定MySQL安装路径,设置到这里就可以了,里面的库头文件会自动查找
"D:\Program Files\cmake\win\bin\cmake.exe" -G "Visual Studio 10 Win64" -DWITH_BOOST=OFF -DWITH_ORACLE=OFF -WITH_MYSQL=ON MYSQL_DIR=D:\mysql-5.7.13-winx64 MYSQL_LIBRARIES=D:\mysql-5.7.13-winx64\lib\libmysql.lib .
通过上面的步骤就会生成使用Visual Studio 2010的编译方案。
打开SOCI.sln文件直接编译就可以了。这里选择release模式编译:
编译完成后会生成静态库与动态库。这里使用动态库,因为静态库在不同版本的Visual Studio上需要重新编译。下面是最终生成的DLL文件的路径。
注意如果想在后面使用的时候方便一些,还需要复制lib文件。
注意lib文件不要复制错了。将dll跟对应的lib文件、还有SOCI目录的include目录复制到一起就可以使用了。
SOCI library使用
在visual Studio中新建socitest项目,然后在代码目录新建include、lib目录,复制如下文件到这些目录:
注意这里的libmysql.dll是在MySQL安装路径复制的,同理下面的关于mysql的头文件也是从mysql的安装路径复制的。
Visual Studio的设置
在项目-->属性中设置头文件路径如下:
这是library寻找路径:
设置需要导入的库头文件:
测试代码
#include "stdafx.h"
#include "soci/soci.h"
#include "soci/mysql/soci-mysql.h"
#include <iostream>
#include <vector>
using namespace soci;
std::string connectString = "db=samp_db user=root password='xxxxxx' host=localhost charset=gbk";
backend_factory const &backEnd = *soci::factory_mysql();
int _tmain(int argc, _TCHAR* argv[])
{
session sql(backEnd, connectString);
mysql_session_backend *sessionBackEnd =
static_cast<mysql_session_backend *>(sql.get_backend());
std::string version = mysql_get_server_info(sessionBackEnd->conn_);
std::cout << "mysql version: " << version << std::endl;
///
system("pause");
return 0;
}