完成jdbc操作时,重复代码太多了。
所以 抽取一个jdbc工具类简化书写。
- 抽取注册驱动
- 抽取一个方法获取连接对象
- 抽取一个方法释放资源
方法用static修饰方便调用
src下创建.properties文件(配置文件)
驱动也写进来了,将来如果切换数据库,只用修改配置文件。
文件的读取,只需读取一次即可拿到数据,使用静态代码块。
JDBCUtils
package emp;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
static {//静态代码块里只能用静态
try {
Properties pro=new Properties();
//类加载器:从src下获取文件路径的方式--->ClassLoader
ClassLoader cl = JDBCUtils.class.getClassLoader();
URL res = cl.getResource("jdbc.properties");
String path = res.getPath();
pro.load(new FileReader(path));
url=pro.getProperty("url");
user=pro.getProperty("user");
password=pro.getProperty("password");
driver=pro.getProperty("driver");
//注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//连接对象
public static Connection getConn() throws SQLException {
return DriverManager.getConnection(url,user,password);
}
//释放资源
public static void close(Statement stmt, Connection conn, ResultSet rs){
if (stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//重载
public static void close(Statement stmt, Connection conn){
if (stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
抽取后的代码
private ListgetAll2(){ Connection conn=null; Statement stmt=null; ResultSet rs=null; List list=new ArrayList (); try { conn = JDBCUtils.getConn(); //sql String sql="select * from emp"; //创建执行sql的statement对象 stmt = conn.createStatement(); //执行sql rs = stmt.executeQuery(sql); //处理结果 Emp m=new Emp(); while (rs.next()){ int id = rs.getInt("id"); String ename = rs.getString("ename"); int job_id = rs.getInt("job_id"); int mgr = rs.getInt("mgr"); Date joindate = rs.getDate("joindate"); double salary = rs.getDouble("salary"); double bonus = rs.getDouble("bonus"); int dept_id = rs.getInt("dept_id"); m.setId(id); m.setEname(ename); m.setJob_id(job_id); m.setMgr(mgr); m.setJoindate(joindate); m.setSalary(salary); m.setBonus(bonus); m.setDept_id(dept_id); list.add(m); } } catch (SQLException e) { e.printStackTrace(); }finally { JDBCUtils.close(stmt,conn,rs); } return list; }



