当前位置: 首页 > article >正文

JDBC使用方式(项目由于一些不可逆因素,必须要使用JDBC连接)

1、yml配置

warning:
  oracle:
    url: xxx
    username: xxx
    password: xxx
    driverClassName: oracle.jdbc.driver.OracleDriver

2、完整代码

public class Test {
    @Value("${warning.oracle.url:}")
    private String url;

    @Value("${warning.oracle.username:}")
    private String username;

    @Value("${warning.oracle.password:}")
    private String password;

    @Value("${warning.oracle.driverClassName:}")
    private String driverClassName;

    public List<CheckResult> findCheckList( Date startTime ) {
        // 1. 建立连接
        Connection conn = getConnection();
        //PreparedStatement 适用于预编译的 SQL 语句,可以提高性能并防止 SQL 注入
        PreparedStatement stmt = null;
        //sql返回的结果集
        ResultSet resultSet = null;
        List<CheckResult> checkIdList = new ArrayList<>();

        try {
            // 2. 创建Statement对象
            String sql = "SELECT START_TIME, CHECK_ID FROM check_result WHERE START_TIME > ?";
            stmt = conn.prepareStatement(sql);

            log.info("oracle-getCheckIdList 查询开始");

            // 3. 设置参数
            Timestamp start = new Timestamp(startTime.getTime());
            stmt.setTimestamp(1, start);

            // 4. 执行查询
            resultSet = stmt.executeQuery();

            // 5. 处理结果
            while (resultSet.next()) {
                CheckResult checkResult = new CheckResult();
                checkResult.setCheckId(resultSet.getString("CHECK_ID"));
                checkResult.setStartTime(resultSet.getTimestamp("START_TIME"));
                checkIdList.add(checkResult);
            }
            log.info("oracle-getCheckIdList 查询成功,共查询成功{}条", checkIdList.size());

            return checkIdList;

        } catch (Exception e) {

            log.error("oracle-getCheckIdList 报错:{}", e);
            throw new RuntimeException(e);

        } finally {
            // 6. 关闭资源
            close(resultSet, stmt);
        }
    }

    /**
     * 建立连接
     * @return
     */
    private Connection getConnection() {
        Connection conn = null;
        try {
            // 加载Oracle JDBC驱动
            Class.forName(driverClassName);
            // 建立连接
            conn = DriverManager.getConnection(url, username, password);
            return conn;
        } catch (Exception e) {
            log.error("获取Oracle数据库连接报错:{}", e);
            throw new RuntimeException(e);
        }
    }

    /**
     * 关闭资源
     * @param rs
     * @param stmt
     */
    private void close(ResultSet rs, PreparedStatement stmt) {
        // 关闭资源
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}


http://www.kler.cn/a/394414.html

相关文章:

  • 【day14】异常处理与Object类深入解析
  • 【C++语言】多态
  • javaEE--计算机是如何工作的-1
  • 怎么实现柔性动态自适应IVR功能
  • 在 Sanic 应用中使用内存缓存管理 IP 黑名单
  • 网络安全概论——身份认证
  • gcd的递归与非递归实现
  • opencv视频读写
  • 机器学习(1)
  • Substance Painter技巧及心得
  • 自動換IP為什麼會不穩定?
  • shell命令笔记
  • gitlab修改root密码详细详情,高版本通用
  • 35数据库服务器(如MySQL, PostgreSQL)
  • Puppeteer教程:使用CSS选择器点击和爬取动态数据
  • 手机版产品目录如何制作?
  • PdServer:调用MidjourneyAPI完成静夜思图文生成
  • PySpark——Python与大数据
  • 极狐GitLab 发布安全补丁版本17.5.2, 17.4.4, 17.3.7
  • 为什么在Ubuntu下使用VScode开发C++程序时需要手动配置链接库
  • 深入理解js中函数中的形参与实参
  • 基于单片机智能温室大棚监测系统
  • 【ES6】ES6中,如何实现桥接模式?
  • kafka日志清理配置
  • odoo的 self.env 是什么
  • LabVIEW-TestExec SL