JDBCUtils工具类的实现
需求:
之前的代码出现过多次的重复性工作,为了提高代码的复用性,我们将重复代码提出来封装成一个工具类
开发步骤:1.创建jdbcutils类,
2.私有化构造函数,防止外界直接new对象
3.提供getConnection,用来对外界提供获取数据库连接
4.提供close方法,用来关闭资源
5.测试
注意:优化代码:将配置文件提取到静态代码、块中,
代码实现如下:
package on.Util;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* 这个类是jdbc的工具类
* 提供getConnection方法
* 提供close方法
* 开发步骤:
* 1.私有化构造函数,防止外界直接new对象
* 2.提供getConnection,用来对外界提供获取数据连接
* 3.提供close方法,用来关闭资源
* 4.测试
* @date 2018年3月23日
*
*/
public class JDBCUtils {
//将读取属性文件放在静态代码块中
//保证文件只被读取一次,节省资源
static Properties prop =null;
static{
try{
//读取配置文件jdbc.properties
prop = new Properties();
String pathname="jdbc.properties";
prop.load(new FileInputStream(pathname));
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//1.私有化构造函数,
// 防止外界直接new对象
private JDBCUtils(){}
//2.提供getConnection,
// 用来对外界提供获取数据连接
public static Connection getConnection(){
try {
//1.注册驱动
Class.forName(
prop.getProperty("driverClass"));
//2.获取数据库连接
Connection conn = DriverManager.getConnection(
prop.getProperty("jdbcUrl"),
prop.getProperty("user"),
prop.getProperty("password"));
return conn;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
// 3.提供close方法,用来关闭资源
public static void close(Connection conn,Statement st,ResultSet rs){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//保证资源一定会被释放
conn=null;
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//保证资源一定会被释放
st=null;
}
}
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//保证资源一定会被释放
rs=null;
}
}
}
}
配置文件的开发形式
* 需求
将程序中出现的配置参数,提取到配置文件中,
提高程序的灵活性。
* 开发步骤
创建jdbc.properties,属性文件。K V,想获取value通过get方法。
创建步骤:文件在工程的根目录下,选中工程名字,右键,new,file,
读取配置文件的数据