学习JDBC时抽取的一个获取连接conn和释放资源的工具类,供以后回顾之用。
Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。键和值都是字符串类型。
/**
* JDBC的工具类
* 作用:获取连接、释放资源
*
*/
public class JDBCUtil {
private JDBCUtil(){}
private static JDBCUtil instance = null;
private static Properties p = null;
//静态代码块,调用静态方法时运行获取Properties对象
static{
try {
instance = new JDBCUtil();
//得到当前ClassPath的绝对URI路径。通过当前线程获取类加载器,读取指定资源的输入流
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");
p = new Properties();
p.load(is);//加载流资源
Class.forName(p.getProperty("driverClassName"));
} catch (Exception e) {
e.printStackTrace();
}
}
public static JDBCUtil newInstance(){
return instance;
}
//获取连接对象
public Connection getConn(){
try {
return DriverManager.getConnection(p.getProperty("url"),p.getProperty("username"), p.getProperty("password"));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//释放资源(资源、(预)加载对象、连接对象)
public void release(Statement st,ResultSet rs,Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}