java—数据源测试连接

@Override
   public int testDatasource(DTO dto) {
    
    
       int result = 0;
       String DB_URL = dto.getUrl();
       String DB_USER = dto.getUsername();
       String DB_PASSWORD = dto.getPassword();
       //驱动
       String jdbcClassName = dto.getDriverClassName();
       //连接测试查询语句
       String TEST_QUERY = dto.getConnectionTestQuery();
       //如果查询语句为空则设置默认测试查询语句
       if (StringUtils.isBlank(TEST_QUERY)) {
    
    
           TEST_QUERY = "SELECT 1";
       }
       //链接最大存活时间
       Integer MAX_LIFETIME = dto.getMaxLifetime();
       //最小空闲连接
       Integer MIN_IDLE = dto.getMinimumIdle();
       //最大连接数
       Integer MAX_POOL_SIZE = dto.getMaximumPoolSize();
       //空闲连接超时时间
       Integer IDLE_TIMEOUT = dto.getIdleTimeout();
       //连接超时时间
       Integer CONNECTION_TIMEOUT = dto.getConnectionTimeout();
       Connection conn = null;
       Statement stmt = null;
       ResultSet rs = null;
       try {
    
    
           // 注册 JDBC 驱动器
//            Class.forName("com.mysql.jdbc.Driver");
           Class.forName(jdbcClassName);
           // 设置连接属性
           java.util.Properties config = new java.util.Properties();
           config.setProperty("maxLifetime", String.valueOf(MAX_LIFETIME));
           config.setProperty("minIdle", String.valueOf(MIN_IDLE));
           config.setProperty("maximumPoolSize", String.valueOf(MAX_POOL_SIZE));
           config.setProperty("idleTimeout", String.valueOf(IDLE_TIMEOUT));
           config.setProperty("connectionTimeout", String.valueOf(CONNECTION_TIMEOUT));
           // 获取数据库连接
           conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
           // 创建 Statement 对象
           stmt = conn.createStatement();

           try {
    
    
               // 执行查询
               rs = stmt.executeQuery(TEST_QUERY);
               // 处理结果集
//            while (rs.next()) {
    
    
//                //查询结果条数
//                result = rs.getInt(1);
//            }
               if (rs.next()) {
    
    
                   System.out.println("数据库测试连接成功!");
                   result = 1;
               } else {
    
    
                   System.out.println("数据库测试连接失败!");
                   result = 0;
               }
           } catch (SQLException e) {
    
    
               e.printStackTrace();
               throw new BusinessException(ResultVO.FAIL.getCode(), "SQL 查询语句执行出错,请检查查询语句是否正确!", e);
           }
       } catch (ClassNotFoundException e) {
    
    
           e.printStackTrace();
           throw new BusinessException(ResultVO.FAIL.getCode(), "无法加载数据库驱动程序,请输入正确的驱动程序!", e);
       } catch (SQLException e) {
    
    
           e.printStackTrace();
           throw new BusinessException(ResultVO.FAIL.getCode(), "无法连接到数据库,请输入正确的数据库信息!", e);
       } finally {
    
    
           // 关闭资源
           try {
    
    
               if (rs != null) {
    
    
                   rs.close();
               }
               if (stmt != null) {
    
    
                   stmt.close();
               }
               if (conn != null) {
    
    
                   conn.close();
               }
           } catch (SQLException e) {
    
    
               e.printStackTrace();
           }
       }
       return result;
   }

猜你喜欢

转载自blog.csdn.net/l_010/article/details/131244910
今日推荐