直接引入Maven依赖
<!-- DM数据库JDBC驱动 --> <dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.3.140</version> </dependency>
demo连接代码
public static void main(String[] args) {// 数据库连接信息Connection conn = null;Statement stmt = null;ResultSet rs = null;try {// 加载DM JDBC驱动Class.forName("dm.jdbc.driver.DmDriver");System.out.println("达梦JDBC驱动加载成功");// 连接到DM数据库 后面跟的库表/模式名String url = "jdbc:dm://localhost:5236/UNIONIST";String user = "SYSDBA";String password = "123456";conn = DriverManager.getConnection(url, user, password);System.out.println("数据库连接成功");// 检查数据库元数据DatabaseMetaData metaData = conn.getMetaData();System.out.println("数据库产品: " + metaData.getDatabaseProductName());System.out.println("数据库版本: " + metaData.getDatabaseProductVersion());// 在连接建立后添加System.out.println("连接的数据库: " + metaData.getURL());System.out.println("当前用户: " + metaData.getUserName());System.out.println("当前模式: " + conn.getSchema()); // DM8支持// 检查表是否存在ResultSet tables = metaData.getTables(null, null, "CITY", new String[]{"TABLE"});if (tables.next()) {System.out.println("找到表: " + tables.getString("TABLE_NAME"));} else {System.out.println("未找到CITY表,尝试不区分大小写查找...");// 尝试不区分大小写查找tables = metaData.getTables(null, null, null, new String[]{"TABLE"});while (tables.next()) {String tableName = tables.getString("TABLE_NAME");if ("CITY".equalsIgnoreCase(tableName)) {System.out.println("找到类似表(不区分大小写): " + tableName);}}}tables.close();// 创建Statement用于执行SQL语句stmt = conn.createStatement();// 先执行一个简单测试查询String testSql = "SELECT COUNT(*) AS cnt FROM USER_TABLES";ResultSet testRs = stmt.executeQuery(testSql);if (testRs.next()) {System.out.println("数据库中的表数量: " + testRs.getInt("cnt"));}testRs.close();// 执行查询并获取结果集String sql = "SELECT * FROM TEST.CITY order by region_id desc";System.out.println("执行SQL: " + sql);rs = stmt.executeQuery(sql);System.out.println("查询执行完成");// 获取结果集元数据ResultSetMetaData rsmd = rs.getMetaData();int columnCount = rsmd.getColumnCount();System.out.println("查询返回列数: " + columnCount);for (int i = 1; i <= columnCount; i++) {System.out.println("列 " + i + ": " + rsmd.getColumnName(i) + " (" + rsmd.getColumnTypeName(i) + ")");}// 处理结果集int rowCount = 0;while (rs.next()) {String id = rs.getString("CITY_ID");String name = rs.getString("CITY_NAME");String region = rs.getString("REGION_ID");// 输出城市信息System.out.println("City ID: " + id + ", Name: " + name + ", Region: " + region);rowCount++;}if (rowCount == 0) {System.out.println("查询成功,但没有返回任何数据");// 尝试另一种查询方式System.out.println("尝试查询所有表数据...");String allDataSql = "SELECT * FROM " +"(SELECT TABLE_NAME FROM USER_TABLES WHERE ROWNUM <= 5)";ResultSet allDataRs = stmt.executeQuery(allDataSql);while (allDataRs.next()) {System.out.println("表名: " + allDataRs.getString("TABLE_NAME"));}allDataRs.close();} else {System.out.println("总共查询到 " + rowCount + " 条记录");}} catch (ClassNotFoundException e) {System.err.println("找不到达梦JDBC驱动: " + e.getMessage());e.printStackTrace();} catch (SQLException e) {System.err.println("数据库操作错误: " + e.getMessage());System.err.println("SQL状态: " + e.getSQLState());System.err.println("错误代码: " + e.getErrorCode());e.printStackTrace();} finally {// 关闭资源try {if (rs != null) rs.close();if (stmt != null) stmt.close();if (conn != null) conn.close();System.out.println("数据库连接已关闭");} catch (SQLException e) {e.printStackTrace();}}}
以上的代码救能对数据库进行相关操作了
附件个配置文件的方式
application.properties 方式
# DM数据库连接配置 spring.datasource.url=jdbc:dm://localhost:5236/your_database_name spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver
application.yml 方式
spring:datasource:url: jdbc:dm://localhost:5236/your_database_name username: your_usernamepassword: your_passworddriver-class-name: dm.jdbc.driver.DmDriver