注册
达梦数据库 JDBC 与 ODBC 接口连接实战指南
专栏/技术分享/ 文章详情 /

达梦数据库 JDBC 与 ODBC 接口连接实战指南

秧秧 2026/08/21 241 0 0
摘要

一、概述

达梦数据库(DM8)作为国产数据库的代表,提供了多种标准接口供应用程序连接访问,其中最常用的是 JDBC 和 ODBC 两种方式。

  • JDBC(Java Database Connectivity) :是 Java 应用程序连接数据库的# 一级标题工业标准接口。Java 程序通过 JDBC API 调用数据库厂商提供的驱动,完成连接建立、SQL 执行和结果读取。
  • ODBC(Open Database Connectivity) :是一种通用的数据库访问接口,支持 C/C++、Python 等多种语言通过统一接口访问数据库。在 Linux 环境下通常借助 unixODBC 作为驱动管理器。

本文基于 Kylin Linux Advanced Server V10 环境,记录 JDBC 和 ODBC 两种方式连接达梦数据库的完整配置过程。

二、环境信息

项目 信息
操作系统 Kylin Linux Advanced Server V10
数据库版本 DM8
达梦安装目录 /dm8
数据库 IP/端口 127.0.0.1:5236
测试用户 SYSDBA
测试密码 Dameng123
JDK 环境 OpenJDK 1.8(/dm8/jdk/bin/java)

三、JDBC 连接配置

3.1 获取 JDBC 驱动

达梦 JDBC 驱动位于数据库安装目录的 drivers/jdbc 下:

ls -lh /dm8/drivers/jdbc/

3.2 编写 JDBC 测试程序(dmdba用户)

创建测试文件 /tmp/TestJDBC.java:

vim /tmp/TestJDBC.java
import java.sql.*; public class TestJDBC { public static void main(String[] args) { String url = "jdbc:dm://localhost:5236"; String user = "SYSDBA"; String password = "Dameng123"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 加载达梦 JDBC 驱动[reference:16] Class.forName("dm.jdbc.driver.DmDriver"); conn = DriverManager.getConnection(url, user, password); System.out.println("JDBC 连接成功!"); stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT SYSDATE"); if (rs.next()) { System.out.println("当前时间: " + rs.getString(1)); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); } catch (Exception e) {} try { if (stmt != null) stmt.close(); } catch (Exception e) {} try { if (conn != null) conn.close(); } catch (Exception e) {} } } }

3.3 编译与运行(dmdba用户)

# 编译(指定驱动 jar 路径)
/dm8/jdk/bin/javac -cp /dm8/drivers/jdbc/DmJdbcDriver8.jar TestJDBC.java

# 运行(classpath 需包含当前目录和驱动 jar)[reference:20]
/dm8/jdk/bin/java -cp .:/dm8/drivers/jdbc/DmJdbcDriver8.jar TestJDBC

成功输出:

JDBC 连接成功!
当前时间: 2026-08-17 15:06:09

3.4 JDBC 常见问题排查

问题 可能原因 解决方法
ClassNotFoundException 驱动 jar 未正确加入类路径 检查 -cp 参数中的 jar 路径是否正确
连接超时/拒绝 IP/端口错误或防火墙拦截 pingtelnet 测试网络连通性
No suitable driver 未执行 Class.forName() 加载驱动 确保代码中包含驱动加载语句

四、ODBC 连接配置

4.1 安装 unixODBC(root用户)

在 Kylin Linux 上通过 yum 安装 unixODBC:

yum install -y unixODBC unixODBC-devel

4.2 注册 ODBC 驱动

编辑 /etc/odbcinst.ini(需要 root 权限):

cat > /etc/odbcinst.ini << 'EOF'
[DM8 ODBC DRIVER]
Description = ODBC Driver for Dameng Database
Driver = /dm8/bin/libdodbc.so
EOF

4.3 配置数据源(DSN)

编辑 /etc/odbc.ini:

cat > /etc/odbc.ini << 'EOF'
[DM8]
Description = DM8 Database
Driver = DM8 ODBC DRIVER
Server = localhost
Port = 5236
User = SYSDBA
Password = Dameng123
EOF

Driver 的值必须与 odbcinst.ini 中的节名完全一致。

4.4 测试 ODBC 连接(dmdba 用户)

使用 isql 命令验证连接:

isql -v DM8

成功连接后进入交互界面::

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

执行查询验证:

SQL> select sysdate; +--------------------+ | SYSDATE | +--------------------+ | 2026-08-17 15:16:16| +--------------------+ SQLRowCount returns 1 1 rows fetched

4.5 ODBC 常见问题排查

问题 可能原因 解决方法
Data source name not found DSN 名称不匹配或配置文件位置错误 检查 odbc.ini 中的 DSN 名称是否与 isql 参数一致
驱动加载失败 libdodbc.so 路径错误或依赖库缺失 ldd /dm8/bin/libdodbc.so 检查依赖
配置文件未被识别 unixODBC 未找到配置文件 odbcinst -j 查看配置文件路径

五、总结

通过以上步骤,我在 Kylin Linux 上成功完成了达梦数据库的 JDBC 和 ODBC 两种接口配置:

  1. JDBC 方式:获取驱动 jar → 编写 Java 代码 → 编译运行,适用于 Java 应用开发。
  2. ODBC 方式:安装 unixODBC → 配置驱动和数据源 → isql 验证,适用于多语言环境和通用工具连接。

两种方式各有适用场景,JDBC 更适合 Java 技术栈的项目,而 ODBC 在需要跨语言访问或使用 BI 工具时更为便捷。实际生产环境中,建议根据应用的语言生态和部署需求选择合适的连接方式。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服