通过ODBC连接达梦数据库

环境:达梦、centos、C++

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 
#include 
// #include
#include
#include
#include
#include
#include
#include

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::"<


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

你可能感兴趣的:(c++,Linux)