直接引入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_username password: your_password driver-class-name: dm.jdbc.driver.DmDriver
浙公网安备 33010602011771号