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

JDBC 与 ODBC 连接达梦数据库配置指南

何处惹尘埃 2026/08/07 221 0 0

JDBC 与 ODBC 连接达梦数据库配置指南

一、简介

达梦数据库支持通过 JDBC(Java Database Connectivity)和 ODBC(Open Database Connectivity)两种标准接口进行连接。JDBC 是 Java 应用程序连接数据库的工业标准,ODBC 是 C/C++ 应用程序连接数据库的通用接口。本文档记录在 CentOS 7 环境下配置达梦数据库 JDBC 和 ODBC 连接的完整过程及遇到的问题与解决方案。

二、环境信息

项目 信息
操作系统 CentOS 7 (Core)
数据库版本 达梦 V8
数据库安装目录 /home/dmdba/dmdbms
主库 IP/端口 192.168.200.18:5237
备库 IP/端口 192.168.201.90:5236
测试用户 SYSDBA
测试密码 Admin2026
测试表 test_rw(含 ID、NAME 两列)

用户切换说明

  • 达梦数据库服务以 dmdba 用户运行
  • ODBC 系统配置文件(/etc/odbc.ini/etc/odbcinst.ini)的修改需要 root 权限
  • 应用程序测试可以在 dmdba 用户下进行

三、JDBC 配置

3.1 原理说明

JDBC(Java Database Connectivity)是 Java 应用程序连接数据库的标准接口。达梦提供了专门的 JDBC 驱动 DmJdbcDriver8.jar,应用程序通过加载该驱动,使用标准的 JDBC URL 格式 jdbc:dm://IP:端口 建立连接。

3.2 操作步骤

步骤1:确认 JDBC 驱动文件(dmdba 用户)

ls -lh /home/dmdba/dmdbms/drivers/jdbc/DmJdbcDriver8.jar

输出

-rwxr-xr-x 1 dmdba dinstall 1.5M Jul  2 08:44 /home/dmdba/dmdbms/drivers/jdbc/DmJdbcDriver8.jar

步骤2:确认 Java 环境(dmdba 用户)

使用达梦自带的 JDK:

/home/dmdba/dmdbms/jdk/bin/java -version

输出

openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)

步骤3:编写 JDBC 测试程序(dmdba 用户)

创建 /tmp/TestJDBC.java

import java.sql.*; public class TestJDBC { public static void main(String[] args) { String url = "jdbc:dm://192.168.200.18:5237"; String user = "SYSDBA"; String password = "Admin2026"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { 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) {} } } }

步骤4:编译并运行(dmdba 用户)

/home/dmdba/dmdbms/jdk/bin/javac -cp /home/dmdba/dmdbms/drivers/jdbc/DmJdbcDriver8.jar /tmp/TestJDBC.java /home/dmdba/dmdbms/jdk/bin/java -cp .:/home/dmdba/dmdbms/drivers/jdbc/DmJdbcDriver8.jar:/tmp TestJDBC

输出

JDBC 连接成功!
当前时间: 2026-08-03 14:13:49

3.3 遇到的问题及解决

问题 原因 解决方法
javac: command not found 系统未安装 JDK 或 JAVA_HOME 未设置 使用达梦自带 JDK:/home/dmdba/dmdbms/jdk/bin/javac
ClassNotFoundException classpath 未正确指定驱动 JAR 路径 使用 -cp 参数指定 DmJdbcDriver8.jar 路径

四、ODBC 配置

4.1 原理说明

ODBC(Open Database Connectivity)是由微软定义的一套标准 API,用于访问数据库管理系统。在 Linux 环境下,通常使用 unixODBC 作为 ODBC 驱动管理器。配置 ODBC 需要两个文件:

  • /etc/odbcinst.ini:定义 ODBC 驱动库的位置
  • /etc/odbc.ini:定义数据源(DSN)的连接参数

4.2 操作步骤

步骤1:安装 unixODBC(root 用户)

yum install -y unixODBC unixODBC-devel

输出

已安装:
  unixODBC.x86_64 0:2.3.1-14.el7
  unixODBC-devel.x86_64 0:2.3.1-14.el7
完毕!

步骤2:确认达梦 ODBC 驱动文件(root 用户)

ls -lh /home/dmdba/dmdbms/bin/libdodbc.so

输出

-rwxr-xr-x 1 dmdba dinstall 1.2M Jul  2 08:44 /home/dmdba/dmdbms/bin/libdodbc.so

步骤3:配置驱动注册文件 /etc/odbcinst.ini(root 用户)

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

步骤4:配置数据源文件 /etc/odbc.ini(root 用户)

cat > /etc/odbc.ini << 'EOF' [DM8] Description = Dameng Database (Primary) Driver = DM8 ODBC DRIVER Server = 192.168.200.18 Port = 5237 UID = SYSDBA PWD = Admin2026 EOF

步骤5:测试 ODBC 连接(dmdba 用户)

isql -v DM8

输出

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> SELECT SYSDATE;
+--------------------+
| SYSDATE            |
+--------------------+
| 2026-08-03 14:18:22|
+--------------------+
SQLRowCount returns 1
1 rows fetched

4.3 遇到的问题及解决

问题 原因 解决方法
[ISQL]ERROR: Could not SQLConnect + 用户名或密码错误 配置文件中使用了 User/Password 参数,部分版本不识别 改用 UID/PWD 参数
Permission denied 写入 /etc/odbc.ini 普通用户无权修改 /etc 目录 切换到 root 用户执行

五、验证备库只读(读写分离)

步骤1:添加备库数据源(root 用户)

cat >> /etc/odbc.ini << 'EOF' [DM8_STANDBY] Description = Dameng Database (Standby) Driver = DM8 ODBC DRIVER Server = 192.168.201.90 Port = 5236 UID = SYSDBA PWD = Admin2026 EOF

步骤2:连接备库并测试(dmdba 用户)

isql DM8_STANDBY SQL> INSERT INTO test_rw VALUES (3, 'odbc_test');

输出

[ISQL]ERROR: Could not SQLExecute

SQL> SELECT * FROM test_rw;

输出

+------------+---------------------------------------------------+
| ID         | NAME                                              |
+------------+---------------------------------------------------+
| 1          | read_write_test                                   |
| 888        | switchover_ok                                     |
+------------+---------------------------------------------------+
SQLRowCount returns 2
2 rows fetched

备库只读验证通过:INSERT 被拒绝,SELECT 可正常查询同步数据。

六、总结

通过本次配置,完成了达梦数据库的 JDBC 和 ODBC 连接配置,验证结果如下:

连接方式 数据源 连接状态 读写验证
JDBC 192.168.200.18:5237 成功 可查询
ODBC 主库 DM8 成功 可读写
ODBC 备库 DM8_STANDBY 成功 只读(读写分离验证)

关键经验

  1. javac 命令找不到时,可使用达梦自带的 JDK(/home/dmdba/dmdbms/jdk/bin/)编译和运行 Java 程序。
  2. ODBC 配置文件 /etc/odbc.ini 中,参数名应使用 UID/PWD 而非 User/Password
  3. ODBC 系统配置文件修改需在 root 用户下进行,应用程序测试可在 dmdba 用户下进行。
  4. isql 退出时使用 quit(不带分号),使用 exit; 可能报错。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服