如果每使用一次JDBC就要重复`注册驱动`,`获得连接`的操作,实现起来就会很繁琐,而且冗余的代码太多,于是可以将重复的部分封装到一个工具类,每次使用工具类就可以了。
public class JDBCUtil { //成员变量私有 //定义数据库的连接地址 private static String url = "jdbc:mysql://localhost:3306/jdbc_01?characterEncoding=utf8&useSSL=false&serverTimezone=UTC"; //定义用户名 private static String userName = "root"; //定义密码 private static String passWord = ""; //定义驱动类名 private static String driverClassName = "com.mysql.cj.jdbc.Driver"; //构造方法私有 private JDBCUtil(){} //注册驱动只需要一次,放在静态代码块 static { try { Class.forName(driverClassName); } catch (ClassNotFoundException e) { e.printStackTrace(); } } //提供对外获得连接的方法 public static Connection getConnect() throws SQLException { Connection con = DriverManager.getConnection(url, userName, passWord); return con; } //添加一个释放资源的方法 public static void release(Connection con, Statement stmt, ResultSet rs){ if (con != null){ try { con.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (rs != null){ try { rs.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
使用封装的工具类进行删除操作
public class Demo03 { @Test public void deleteOne(){ Connection con = null; Statement stmt = null; try { //使用工具类直接获取连接对象 con = JDBCUtil.getConnect(); //获取执行sql语句的对象 stmt = con.createStatement(); //定义sql语句 String sql = "delete from scores where sid = 1"; int res = stmt.executeUpdate(sql); if (res > 0) { System.out.println("删除一条记录成功"); } else { System.out.println("删除一条记录失败"); } }catch (Exception e){ e.printStackTrace(); }finally { //释放资源 JDBCUtil.release(con,stmt,null); } } }
执行结果:
使用工具类进行查询:
/* 使用JDBC工具类完成查询 */ public class Demo04 { Connection con = null; Statement stmt = null; ResultSet rs = null; @Test public void queryAll(){ try { //连接 con = JDBCUtil.getConnect(); //获取对象 Statement stmt = con.createStatement(); //定义sql语句 String sql = "select * from scores"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()){ Object sid = rs.getObject("sid"); Object score = rs.getObject("score"); Object sname = rs.getObject("sname"); System.out.println("学号:"+sid+" 成绩:"+score+" 姓名:"+sname); } }catch (Exception e){ e.printStackTrace(); }finally { //释放资源 JDBCUtil.release(con,stmt,rs); } } }