package JUtils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import driudDemo.Druid;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* 自己动手写一个JDBC的工具类
* 数据库连接目前主流的是两种方式:
* 1.C3P0
* 2.Druid
* 这篇主要实现的是第二种工具类
*/
public class JUtilsDemo02 {
private static DataSource ds;
/**
* 文件的读取,只需要读取一次即可拿到这些值。使用静态代码块
*/
static {
Properties properties = new Properties();
try {
//通过反射获取配置文件
properties.load(Class.forName("com.mysql.jdbc.Driver").getClassLoader().getResourceAsStream("druid.properties"));
//通过读取的配置文件,获取数据源(利用阿里的DruidDataSourceFactory)(需要导入jar包 druid-1.0.9.jar)
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDataSource(){
return ds;
}
public static void close(Connection con,Statement pst,ResultSet rs){
//程序健壮性判断,如果为空就不用释放
if (con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
//将对象置空,垃圾回收器会定期回收
con = null;
}
//程序健壮性判断,如果为空就不用释放
if (pst != null){
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
//将对象置空,垃圾回收器会定期回收
pst = null;
}
//程序健壮性判断,如果为空就不用释放
if (rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
//将对象置空,垃圾回收器会定期回收
rs = null;
}
}
public static void close(Connection con,Statement pst){
//程序健壮性判断,如果为空就不用释放
if (con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
//将对象置空,垃圾回收器会定期回收
con = null;
}
//程序健壮性判断,如果为空就不用释放
if (pst != null){
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
//将对象置空,垃圾回收器会定期回收
pst = null;
}
}
}