注册
达梦数据库 JDBC 与 ODBC 连接配置实战
技术分享/ 文章详情 /

达梦数据库 JDBC 与 ODBC 连接配置实战

文橘本可 2026/08/07 141 0 0

一、概览

本文将基于 Kylin Linux Advanced Server V10 环境,手把手配置 JDBC 和 ODBC 连接达梦数据库实例,包含完整的操作步骤、常见问题解决,以及两种连接方式的本质区别。

二、环境速览

  • 操作系统:Kylin Linux Advanced Server V10 (Halberd),内核 4.19.90
  • CPU 架构:x86_64
  • 达梦版本:DM Database Server 64 V8 (开发版)
  • 达梦安装目录(DM_HOME)/home/dmdba/dmdbms
  • 实例信息
    • 实例 GRP1_RT_01:端口 5236,数据目录 /data/dmdata/DAMENG/
    • 实例 GRP1_RT_02:端口 5237,数据目录 /data/dmdata/DAMENG02/
  • 数据库用户:SYSDBA / Wei050210(示例密码)
  • 可用 IP 地址:10.36.41.13(enp1s0 网卡绑定地址)
  • JDK 环境:OpenJDK 1.8.0_492

三、JDBC 连接配置

JDBC(Java Database Connectivity)是 Java 程序连接数据库的标准接口,达梦通过提供对应的 JDBC 驱动实现连接。

1. 确认驱动包

进入达梦驱动的 JDBC 目录:

ls /home/dmdba/dmdbms/drivers/jdbc/

输出:

DmJdbcDriver6.jar  DmJdbcDriver7.jar  DmJdbcDriver8.jar  DmJdbcDriver11.jar ...

根据 JDK 版本选择:JDK 8 应使用 DmJdbcDriver8.jar。设置环境变量方便后续操作:

export DM_JDBC_DRIVER=/home/dmdba/dmdbms/drivers/jdbc/DmJdbcDriver8.jar

2. 编写测试程序

创建测试目录并编写 DmJdbcTest.java

import java.sql.*; public class DmJdbcTest { public static void main(String[] args) { String url = "jdbc:dm://10.36.41.13:5236"; String user = "SYSDBA"; String password = "Wei050210"; // 根据实际环境修改 try { Class.forName("dm.jdbc.driver.DmDriver"); Connection conn = DriverManager.getConnection(url, user, password); System.out.println("连接成功!"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT 'Hello DM8!' FROM DUAL"); if (rs.next()) { System.out.println("查询结果: " + rs.getString(1)); } rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } }

3. 编译与运行

javac -cp $DM_JDBC_DRIVER DmJdbcTest.java java -cp .:$DM_JDBC_DRIVER DmJdbcTest

预期输出:

连接成功!
查询结果: Hello DM8!

QQ20260803091343.png
至此,JDBC 连接配置完成。若出现 ClassNotFoundException,请检查驱动 jar 路径是否正确;网络不通则先 pingtelnet 对应 IP 和端口。

四、ODBC 连接配置

ODBC(Open Database Connectivity)是更通用的数据库连接标准,允许 C/C++、Python 等各类语言通过统一接口访问数据库。在 Linux 上需要借助 unixODBC 驱动管理器。

1. 安装 unixODBC(离线环境)

麒麟 V10 服务器无外网,需离线安装。下载对应 RPM 包并上传至 /opt
QQ20260803093724.png

unixODBC-2.3.7-1.el8.x86_64.rpm unixODBC-devel-2.3.7-1.el8.x86_64.rpm

尝试直接安装时会报依赖错误:libreadline.so.7()(64bit) is needed。系统已安装的是 readline-8.0,库文件为 libreadline.so.8。创建软链接并不能骗过 RPM 依赖检查,最便捷的方式是忽略依赖强制安装:

rpm -ivh --nodeps unixODBC-*.rpm

验证安装:

odbcinst --version

QQ20260803093810.png

说明libreadline.so.7 缺失仅影响 isql 的命令行编辑功能(如历史命令翻页),ODBC 核心功能完全不受影响。

2. 配置 ODBC 驱动

编辑 /etc/odbcinst.ini,注册达梦 ODBC 驱动:
QQ20260803093642.png

[DM8 ODBC DRIVER] Description = DM ODBC Driver for DM8 Driver = /home/dmdba/dmdbms/bin/libdodbc.so Threading = 1

libdodbc.so 即达梦的 ODBC 驱动库,位于 $DM_HOME/bin 下。

3. 配置数据源(DSN)

编辑 /etc/odbc.ini,定义连接到具体实例的数据源:

[DM5236] Description = DM8 Instance GRP1_RT_01 Driver = DM8 ODBC DRIVER Server = 10.36.41.13:5236 UID = SYSDBA PWD = Wei050210 Database = GRP1_RT_01 LoginMode = 1 Encode = UTF-8 [DM5237] Description = DM8 Instance GRP1_RT_02 Driver = DM8 ODBC DRIVER Server = 10.36.41.13:5237 UID = SYSDBA PWD = Wei050210 Database = GRP1_RT_02 LoginMode = 1 Encode = UTF-8
  • Server:使用 IP:端口 格式,推荐实际 IP 而非 localhost。
  • Database:填写达梦实例名。

4. 测试连接

设置动态库路径,使系统能找到 libdodbc.so

export LD_LIBRARY_PATH=/home/dmdba/dmdbms/bin:$LD_LIBRARY_PATH isql -v DM5236 SYSDBA Wei050210

出现 Connected!SQL> 提示符即表示连接成功。随后可执行查询:

SQL> SELECT 'Hello ODBC!' FROM DUAL;

QQ20260803100538.png

5. 常见问题处理

  • 驱动加载失败:检查 /etc/odbcinst.ini 中的 Driver 路径是否正确,以及当前用户是否有库的执行权限。
  • 网络无法连接:用 telnet 10.36.41.13 5236 验证端口可达性。
  • 字符集问题:确保 Encode 参数与数据库字符集一致(一般为 UTF-8)。

五、查询测试

isql 中,可以像使用传统 SQL 客户端一样探索达梦:

-- 查看版本 SELECT * FROM V$VERSION; -- 列出当前用户所有表 SELECT TABLE_NAME FROM USER_TABLES; -- 查找著名 EMP 表在哪个模式下 SELECT OWNER, TABLE_NAME FROM ALL_TABLES WHERE TABLE_NAME='EMP';

假如结果显示 EMP 属于 NEWSCHEMA 模式,则需用 NEWSCHEMA.EMP 访问:

SELECT * FROM NEWSCHEMA.EMP;

这就是达梦的模式(Schema)隔离机制,与 Oracle 类似,表名前需要带上模式名。

六、JDBC 与 ODBC 的本质区别

JDBC 和 ODBC 是数据库连接接口标准

对比维度 JDBC ODBC
面向语言 Java C/C++、Python、C# 等通用语言
核心实现 各数据库提供 Java 驱动 jar 包 各数据库提供 ODBC 驱动库(.so/.dll),并由 ODBC 管理器加载
使用方式 Class.forName 加载驱动,DriverManager 获取连接 配置数据源(DSN),应用通过 DSN 连接
适用场景 Java 生态(Spring、MyBatis 等) 跨语言、系统集成、BI 工具(如 Excel、Power BI 通过 ODBC 连数据库)

两者解决的是同一个问题:让应用程序无需为每种数据库编写不同代码。达梦同时支持 JDBC 和 ODBC,使得无论使用 Java 还是 Python,都能轻松对接。

七、总结

本文在完全离线的麒麟 V10 系统上,成功配置了达梦 DM8 的 JDBC 和 ODBC 连接,并进行了基础交互。关键点回顾:

  • JDBC 连接只需驱动 jar 和正确的 URL,适合 Java 应用。
  • ODBC 需要安装 unixODBC 并配置驱动与数据源,适合多语言或系统级集成。
  • 离线环境下,强制安装 RPM 包可绕过非核心依赖问题。
  • 达梦数据库的模式概念要求表名前必须带所属模式名。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服