ubuntu16.04通过odbc(用的C++)访问另一台centos上的达梦数据库
来源:互联网 发布:zimg php 编辑:程序博客网 时间:2024/06/09 13:43
背景
我的项目中需要C++访问达梦数据库,所以花了很大功夫来实现这个功能。
通过和达梦官方的邮件联系之后,得知现在达梦数据库(dm7)是不能在ubuntu版本的linux上安装server的,但是client还是可以安装在ubuntu上的。所以可以通过odbc来访问安装在centos上的达梦数据库。
服务端达梦的安装
在centos上安装的教程如下连接:http://blog.csdn.net/allens_zhou/article/details/8575400
ubuntu客户端配置:
首先要安装unixODBC,网上有教程;
然后安装soci,这是它的官网:soci.sourceforge.net/doc/3.2/,具体安装使用过程网上也有教程。
然后配置odbc manager和odbc driver
这个博客对我的帮助很大:http://www.itpub.net/thread-1824202-1-1.html,它指明了配置达梦odbc可以不需要libdmOdbcSet.so这个库,只要libdodbc.so就行了。具体操作见下:
- 安装完odbc后,odbcinst –j 来查看安装位置等信息
- 配置 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 |
| |
+—————————————+ - 还可以建表,如create table student (id int, name char(128), score int)
- 插入数据: insert into student (id, name, score) values (1,’myname’, 100)
C++通过soci访问达梦例子:
main.cpp:
#include <soci/soci.h>#include <soci/odbc/soci-odbc.h>#include<soci/mysql/soci-mysql.h>#include <soci/postgresql/soci-postgresql.h>#include<iostream>#include<istream>#include<ostream>#include<string>#include<exception>#include<unistd.h>using namespace std;using namespace soci;int main() {// session sql("mysql://host=127.0.0.1 dbname=student user=root password=123");//建立连接// connection_pool pool(10);// for (int i=0; i<10; i++) {// session &sql = pool.at(i);// sql.open// } session sql("odbc://DSN=dm"); session sql0(odbc, "DSN=dm"); session sql1(odbc, "DSN=dm"); unsigned id=0; string name("lxc_00"); int score=100; try { sql<<"insert into student (id, name, score) values (:item_0,:item_1, :item_2)", use(id,"item_0"),use(name,"item_1"), use(score, "item_2"); } catch (exception const & e) { cerr<<"Error::"<<e.what()<<endl; } sql.close(); sql0.close(); sql1.close();}
makefile:
all = allcc = g++ -std=c++11 -Wall -gsource = main.cppLIB = -lpq -lsoci_core -lsoci_postgresql -lmysqlclient -ldl -lpthread -lsoci_odbcINCLUDE = -I/usr/include/mysql $(all): $(source) $(cc) -o main $(source) $(LIB) $(INCLUDE)clean: rm *.o
这样就可以用C++访问达梦了!
阅读全文
0 0
- ubuntu16.04通过odbc(用的C++)访问另一台centos上的达梦数据库
- 如何访问另一台服务器的数据库
- Ubuntu16.4中访问另一台Ubuntu16.4中共享出来的目录
- 怎样访问另一台物理机上的虚拟机
- 如何访问另一台主机上的虚拟机Ubuntu系统
- 通过ODBC API实现对数据库的访问(转)
- 【转】如何访问另一台服务器的数据库
- 将一台电脑上的数据库拷贝到另一台电脑
- phpstudy自己电脑连接另一台电脑上的数据库
- ArcGIS连接局域网另一台电脑上的SQLServer数据库
- 如何访问虚拟机(另一台设备)上运行的 Web 项目
- 在一台电脑访问另一台电脑的mysql数据库
- 在一台电脑访问另一台电脑的mysql数据库
- 在一台电脑访问另一台电脑的mysql数据库
- 如何从一台远程Linux主机备份另一台主机上的数据库
- 两台oracle 数据库的全局数据库名相同,怎在一台中访问另一台的数据库?
- win8.1 c++ odbc 连接centos 上的oracle数据库
- Oracle 将一台机器上的数据库注册到另一台机器的监听上
- 迭代器、增强for、泛型
- 正则表达式
- 迭代和递归基本思想
- 【HDU
- Spark内存管理模型
- ubuntu16.04通过odbc(用的C++)访问另一台centos上的达梦数据库
- 【架构性能分析(2)】Tomcat 配置优化
- 【译】你可以用GitHub做的12件 Cool 事情
- 看过的闲书
- 搜索学习入门--Lucene初体验(Lucene索引的增删改查)
- Oracle之表/视图名称大小写问题-yellowcong
- Spring之bean作用域(JAVASE)
- JDK1.8环境变量配置
- 基于ESP8266的微信门铃