最近在做数据库的连接时,和同事对JDBC的封住有不同的方法,在这分析分析
1、采用外部建util包,在持久层实现类中使用静态方法的 类名. 的方式调用方式;这种方法就是在加载sql驱动时,使用的是静态块,只加载一次,不用重复加载驱动
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; //数据库支持类 public class DBUtil { static{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //获得链接 public static Connection getConnection(){ Connection con = null; try { con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myserver?characterEncoding=utf-8","root","lovo"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return con; } //关闭链接 public static void closeConnection(Connection con){ try { if(con!=null){ con.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
2、采用BaseDao的方式,将其做成父类,在持久层实现类里继承这个类,用继承的方式来调用书写的方法
public class BaseDao { //声明 protected Connection con; protected PreparedStatement ps; protected ResultSet rs; //建立连接 public void setConnection() { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/crm?characterEncoding=utf-8", "root", "200888"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //关闭连接 public void closeConnection() { try { if (rs != null) { rs.close(); } ps.close(); con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }