直接引入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

 

 
posted on 2025-09-17 14:44  Cetl  阅读(26)  评论(0)    收藏  举报