9527灯塔 2021-08-29 00:05 采纳率: 0%
浏览 15

命令行编译出现API已过时

package util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.Properties;
import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;


/**
 *    管理连接的工具类,带有连接池,
 *    适用于多线程的场景。
 */
public class DBUtil {    
    private static BasicDataSource ds;    
    //加载连接参数
    static {
        Properties p = new Properties();
        try {
            InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("util/db.properties");            
            p.load(is);
            is.close();            
            //读取连接参数
            String driver = p.getProperty("jdbc.driver");
            String url = p.getProperty("jdbc.url");
            String user =p.getProperty("jdbc.user");
            String pwd = p.getProperty("jdbc.pwd");
            String initSize = p.getProperty("ds.initSize");
            String maxSize = p.getProperty("ds.maxSize");
            //创建连接池
            ds = new BasicDataSource();
            //设置连接参数(必须设置)
            ds.setDriverClassName(driver);
            ds.setUrl(url);
            ds.setUsername(user);
            ds.setPassword(pwd);
            //设置连接池管理参数(有默认值)
            //初始化连接数
            ds.setInitialSize(new Integer(initSize));
            //最大连接数
            ds.setMaxIdle(new Integer(maxSize));
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException("加载配置文件失败", e);
        }
    }
    
    /**
     * 连接池创建的连接,不是原始的连接,
     * 而是它重新封装后的连接。典型的特征
     * 是其关闭方法是归还连接。
     */
    public static Connection getConnection() {
        try {
            return ds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException("创建连接失败", e);
        }
    }
    
    /**
     * 若连接由连接池创建,则关闭连接
     * 就是将其归还给连接池,该连接的
     * 状态会变成空闲,可以继续复用。
     */
    public static void close(
        Connection con, Statement smt) {
        try {
            if(smt != null) {
                smt.close();
            }
            if(con != null) {
                con.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException("释放资源失败", e);
        }
    }

    public static void close(Connection con,Statement smt,ResultSet rs) {
        try {
                if(rs != null) {
                    rs.close();
                }
                if(smt != null) {
                    smt.close();
                }
                if(con != null) {
                    con.close();
                }
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException("释放资源失败", e);
        }
    }    
    
    public static void main(String[] args) {
        Connection con = DBUtil.getConnection();
        System.out.println(con.getClass());
        DBUtil.close(con, null);
    }
    
}

 

  • 写回答

1条回答 默认 最新

  • 猿小白888 2022-12-20 10:00
    关注

    检查下数据库与jdbc的jar包版本是否一致

    评论

报告相同问题?

问题事件

  • 创建了问题 8月29日

悬赏问题

  • ¥15 2013VS+2016IVF 为什么不能生成解决方案,会报找不到指定文件
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 为什么我安装了Homebrew之后,无法像官网的那样通过执行命令安装Watchman
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参