Oracle 使用配置文件来配置JDBC连接数据库

首先配置文件保存为config.properties放在包内。

driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:3306
user=root
pwd=root
initsize=1
maxactive=1
maxwait=5000
maxidle=1
minidle=1

然后导入
这里写图片描述
数据库连接管理类

package day01;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import org.apache.commons.dbcp.BasicDataSource;
/**
 * 使用连接池技术管理数据库连接
 * @author Administrator
 */
public class DBUtil2 {
    //数据库连接池
    private static BasicDataSource ds;
    //为不同线程管理连接
    private static ThreadLocal tl;
    static{
        try{
            Properties prop= new Properties();

            InputStream is= DBUtil2.class.getClassLoader().getResourceAsStream("day01/config.properties");
            prop.load(is);
            is.close();
            //初始化连接池
            ds = new BasicDataSource();
            //设置驱动 (Class.forName())
            ds.setDriverClassName(prop.getProperty("driver"));
            //设置url
            ds.setUrl(prop.getProperty("url"));
            //设置数据库用户名
            ds.setUsername(prop.getProperty("user"));
            //设置数据库密码
            ds.setPassword(prop.getProperty("pwd"));
            //初始连接数量
            ds.setInitialSize(Integer.parseInt(prop.getProperty("initsize")));
            //连接池允许的最大连接数
            ds.setMaxActive(Integer.parseInt(prop.getProperty("maxactive")));
            //设置最大等待时间
            ds.setMaxWait(Integer.parseInt(prop.getProperty("maxwait")));
            //设置最小空闲数
            ds.setMinIdle(Integer.parseInt(prop.getProperty("minidle")));
            //设置最大空闲数
            ds.setMaxIdle(Integer.parseInt(prop.getProperty("maxidle")));
            //初始化线程本地
            tl = new ThreadLocal();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 获取数据库连接
     * @return
     * @throws SQLException 
     */
    public static Connection getConnection() throws SQLException{
        /*
         * 通过连接池获取一个空闲连接
         */
        Connection conn = ds.getConnection();
        tl.set(conn);
        return conn;
    }
    /**
     * 关闭数据库连接
     */
    public static void closeConnection(){
        try{
            Connection conn = tl.get();
            if(conn != null){
                /*
                 * 通过连接池获取的Connection
                 * 的close()方法实际上并没有将
                 * 连接关闭,而是将该链接归还。
                 */
                conn.close();
                tl.remove();
            }   
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

你可能感兴趣的:(数据库问题集合)