1、需要在目标机器上安装达梦的client端,当然server和client一起安装也可以的;
2、需要配置ODBC,安装unixODBC;
unixODBC的安装参考:
去官方网站下载一个 uniODBC2.3.1
cd /opt
tar -zxvf unixODBC-2.3.1.tar.gz
cd unixODBC-2.3.1
./configure
make
make install
安装完后,odbcinst –j 来查看安装位置等信息,如:
unixODBC 2.3.1
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
配置 odbcinst.ini,作用就是注册DM7的ODBC驱动,该驱动名称为DM7,内容如下:
[DM7]
Description = dm odbc
Driver = /opt/dmdbms/bin/libdodbc.so
配置 odbc.ini,作用就是创建系统DSN,名称为dm,调用名为DM7的ODBC驱动,内容如下:
[dm]
Description = dm7 dsn
Driver = DM7
SERVER =127.0.0.1
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
配置完成之后,直接在终端运行:isql dm
来测试,如果返回以下信息,测说明配置成功:
[root@localhost opt]# isql dm
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select 1;
+------------+
| 1 |+------------+
| 1 |
+------------+
SQLRowCount returns 1
1 rows fetched
SQL>
3、安装SOCI,连接数据库
参考官网:oci.sourceforge.net/doc/3.2/
4、C++代码连接达梦数据库
#include <soci/soci.h>
#include <soci/odbc/soci-odbc.h>
// #include<soci/mysql/soci-mysql.h>
#include<iostream>
#include<istream>
#include<ostream>
#include<string>
#include<exception>
#include<unistd.h>
using namespace std;
using namespace soci;
int main() {
session sql0("odbc://DSN=dm;Uid=SYSDBA;Pwd=SYSDBA;Server=192.168.174.132;TCP_PORT=5236;");
// session sql0(odbc, "DSN=dm");
string name("dm");
try {
sql0<<"insert into table_1 (\"name\") values (:item_0)", soci::use(name,"item_0");
} catch (exception const & e) {
cout<<"Error::"<<e.what()<<endl;
}
sql0.close();
// string name("dm");
// session sql("mysql://host=192.168.174.132 dbname=testdb user=root password=123456");//建立连接
// try {
// sql<<"insert into tab1 (text) values (:item_0)", soci::use(name,"item_0");
// } catch (exception const & e) {
// cout<<"Error::"<<e.what()<<endl;
// }
// sql.close();
}
5、makefile文件:依赖libsoci_core.so
all = all
cc = g++ -std=c++11 -Wall -g
source = main.cpp
LIB = -ldl -lsoci_core -lpthread -lsoci_odbc
INCLUDE = -I/usr/include/mysql -I/usr/local/include/soci -I/usr/local/lib64/
$(all): $(source)
$(cc) -o main $(source) $(LIB) $(INCLUDE)
clean:
rm *.o