在jdbc的开发中,存在大量重复的代码,将这些重复代码提取出来,封装起来,提高代码的复用性,简化开发。
getConnection()--获取并返回一个连接对象
close--释放资源
私有化构造函数(private)
提供静态方法getConnection,用来对外提供数据库连接对象(public)
提供静态方法close,用来释放资源
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 这个类用来完成JDBC工具类的开发
*/
public class JDBCUtils {
//私有化构造函数,(无法创建对象)防止外界直接创建对象
private JDBCUtils(){};
//提供静态方法getConnection,用来对外提供数据库连接对象java.sql.Connection
public static Connection getConnection(){
//1.注册驱动
Connection conn=null;
try {
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库连接
String url="jdbc:mysql:///st_db";
String userName="root";
String passWord="123456";
conn=DriverManager.getConnection(url,userName,passWord);
return conn;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//提供静态的close方法,用来释放资源
public static void close(ResultSet rs,Statement st,Connection conn){
//rs忘了赋值,或者赋值之前除了异常
if(rs!=null)
{
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs=null;//只要发生异常就会被catch住。需要手动置空,等待垃圾回收
}
}
if(st!=null)
{
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
st=null;
}
}
if(conn!=null)
{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs=null;
}
}
}
}