作業系統:CentOS 7.8 64-bit
軟體需求:
SOCI 4.0.1
GBase 8s CSDK
1,安裝CSDK
手工安裝CSDK,或者下載下傳免安裝版本的CSDK
下載下傳位址:
https://gbasedbt.com/odbc/GBase8s_3.0-Linux64-ODBC-Driver.tar.gz
[[email protected] ~]# wget https://gbasedbt.com/odbc/GBase8s_3.0-Linux64-ODBC-Driver.tar.gz
# 解壓至指定目錄,如/opt,生成/opt/gbase8s-odbc-driver目錄。
[[email protected] ~]# tar -C /opt -zxf GBase8s_3.0-Linux64-ODBC-Driver.tar.gz
設定環境變量檔案(也可以寫入到/etc/profile中)
# 增加GBASEDBTDIR,LD_LIBRARY_PATH
export GBASEDBTDIR=/opt/gbase8s-odbc-driver
export LD_LIBRARY_PATH=$GBASEDBTDIR/lib:$GBASEDBTDIR/lib/esql:$GBASEDBTDIR/lib/cli:$GBASEDBTDIR/lib/c++:$LD_LIBRARY_PATH
2,安裝SOCI
SOCI需要預先安裝cmake 2.8+(建議cmake3), gcc-c++
下載下傳位址:
https://github.com/SOCI/soci.git
或者https://sourceforge.net/projects/soci/files/soci/ (建議)
[[email protected] ~]# wget https://netactuate.dl.sourceforge.net/project/soci/soci/soci-4.0.1/soci-4.0.1.tar.gz
[[email protected] ~]# tar -zxvf soci-4.0.1.tar.gz && cd soci-4.0.1
設定環境變量檔案(也可以寫入到/etc/profile中)
# 增加LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
編譯安裝SOCI,建議使用cmake3
[[email protected] soci-4.0.1]# cmake3 -DWITH_BOOST=ON -DSOCI_TESTS=ON
[[email protected] soci-4.0.1]# make
[[email protected] soci-4.0.1]# make install
3,編寫測試程式腳本TestSOCIOdbc.cpp
// filename: TestSOCIOdbc.cpp
#include <soci/soci.h>
#include <soci/odbc/soci-odbc.h>
#include<iostream>
#include<istream>
#include<ostream>
#include<string>
#include<exception>
using namespace std;
using namespace soci;
int main() {
cout<<"SOCI 測試程式開始運作.\n\n";
try {
session sql(odbc,"Driver=/opt/gbase8s-odbc-driver/lib/cli/iclit09b.so;HOST=a02.gbasedbt.com;SERV=9088;PROT=onsoctcp;SRVR=gbase01;DB=testdb;U
ID=gbasedbt;PWD=GBase123;DLOC=zh_CN.utf8;CLOC=zh_CN.utf8");
// 删除和建立表
sql<< "drop table if exists company";
sql<< "create table company(coid serial,coname varchar(255),coaddr varchar(255))";
// 插入記錄
string cn = "南大通用";
string ca = "天津市海泰綠色産業基地";
sql<< "insert into company(coname,coaddr) values (:cn, :ca)", use(cn), use(ca);
cn = "南大通用北京分公司";
ca = "北京市朝陽區太陽宮";
sql<< "insert into company(coname,coaddr) values (:cn, :ca)", use(cn), use(ca);
// 查詢記錄
rowset<row> rs = (sql.prepare << "select * from company");
for (rowset<row>::iterator it = rs.begin(); it != rs.end(); ++it)
{
const row& row = *it;
cout << "coid:" << row.get<int>(0)
<< " coname:" << row.get<string>(1)
<< " coaddr:" << row.get<string>(2) << endl;
}
} catch (exception const &e) {
cerr<<"Error:" <<e.what()<<endl;
}
cout<<"\nSOCI 測試程式結束運作.\n";
}
4,編譯C++程式,測試連接配接GBase 8s資料庫測試
[[email protected] ~]# g++ -Wall -g -o TestSOCIOdbc TestSOCIOdbc.cpp -lsoci_core -lsoci_odbc
[[email protected] ~]# ./TestSOCIOdbc
SOCI 測試程式開始運作.
coid:1 coname:南大通用 coaddr:天津市海泰綠色産業基地
coid:2 coname:南大通用北京分公司 coaddr:北京市朝陽區太陽宮
SOCI 測試程式結束運作.