达梦数据库(DM8)作为国产数据库的代表,提供了多种标准接口供应用程序连接访问,其中最常用的是 JDBC 和 ODBC 两种方式。
本文基于 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 驱动位于数据库安装目录的 drivers/jdbc 下:
ls -lh /dm8/drivers/jdbc/
创建测试文件 /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) {}
}
}
}
# 编译(指定驱动 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
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
ClassNotFoundException |
驱动 jar 未正确加入类路径 | 检查 -cp 参数中的 jar 路径是否正确 |
| 连接超时/拒绝 | IP/端口错误或防火墙拦截 | ping 或 telnet 测试网络连通性 |
No suitable driver |
未执行 Class.forName() 加载驱动 |
确保代码中包含驱动加载语句 |
在 Kylin Linux 上通过 yum 安装 unixODBC:
yum install -y unixODBC unixODBC-devel
编辑 /etc/odbcinst.ini(需要 root 权限):
cat > /etc/odbcinst.ini << 'EOF'
[DM8 ODBC DRIVER]
Description = ODBC Driver for Dameng Database
Driver = /dm8/bin/libdodbc.so
EOF
编辑 /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 中的节名完全一致。
使用 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
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
Data source name not found |
DSN 名称不匹配或配置文件位置错误 | 检查 odbc.ini 中的 DSN 名称是否与 isql 参数一致 |
| 驱动加载失败 | libdodbc.so 路径错误或依赖库缺失 |
用 ldd /dm8/bin/libdodbc.so 检查依赖 |
| 配置文件未被识别 | unixODBC 未找到配置文件 | 用 odbcinst -j 查看配置文件路径 |
通过以上步骤,我在 Kylin Linux 上成功完成了达梦数据库的 JDBC 和 ODBC 两种接口配置:
两种方式各有适用场景,JDBC 更适合 Java 技术栈的项目,而 ODBC 在需要跨语言访问或使用 BI 工具时更为便捷。实际生产环境中,建议根据应用的语言生态和部署需求选择合适的连接方式。
文章
阅读量
获赞
