【JDBC】实现对JDBC 连接的简单封装
package util; import java.sql.Connection; import java.sql.DriverManager; /*** * 实现对JDBC 的封装 * @author mqy * */ public class JdbcUtil { private JdbcUtil() { } private static String driverClassName = "com,mysql.jdbc.Driver"; private static String url = "jdbc:mysql:///jdbcdemo"; private static String user = "root"; private static String password = "root"; //使用静态代码块实现 jdbcUtil的字节码被加载锦jvm中 并且只执行一次。避免每次使用都注册 static{ try { Class.forName(DriverClassName); } catch (Exception e) { e.printStackTrace(); } } //提供外界访问 public static Connection getConn(){ try { return DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); } return null; } }
关闭资源
//关闭资源 查询方法关闭资源 JdbcUtil.close(conn,st,rs) //增删改 关闭资源JdbcUtil.close(conn,st,null) public static void close(Connection conn,Statement st,ResultSet rs){ try { if (rs != null) { rs.close(); } } catch (Exception e) { e.printStackTrace(); }finally { try { if (st != null) { st.close(); } } catch (Exception e2) { e2.printStackTrace(); }finally { try { if (conn != null) { conn.close(); } } catch (Exception e) { e.printStackTrace(); } } } } }
注意:⚠️上面的简单封装,虽然解决了在使用过程中书写重复代码的问题,不过还存在一个问题,那就是将数据库的基本信息写死在了源代码中,这样不利于维护,如果要修改每次得修改源代码。
解决方案:把数据库的连接信息抽取到一个配置文件(properties/xml)中存储。观察发现存储的信息,是以key-value的形式存在,所以采用properties文件存储。
在scr路径下新建一个bd.properties 文件并存储信息:
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql:///jdbcdemo user=root password=root;
加载properties文件如下:
package util; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import com.mysql.jdbc.Statement; /*** * 实现对JDBC 的封装 * @author mqy * */ public class JdbcUtil { private static Properties properties = new Properties(); //使用静态代码块实现 jdbcUtil的字节码被加载锦jvm中 并且只执行一次。避免每次使用都注册 static{ try { InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"); properties.load(inputStream); Class.forName(properties.getProperty("driverClassName")); } catch (Exception e) { e.printStackTrace(); } } private JdbcUtil() { } //提供外界访问 返回数据库的连接对象 public static Connection getConn(){ try { return DriverManager.getConnection(properties.getProperty("url"), properties.getProperty("user"), properties.getProperty("password")); } catch (Exception e) { e.printStackTrace(); } return null; } //关闭资源 查询方法关闭资源 JdbcUtil.close(conn,st,rs) //增删改 关闭资源JdbcUtil.close(conn,st,null) public static void close(Connection conn,Statement st,ResultSet rs){ try { if (rs != null) { rs.close(); } } catch (Exception e) { e.printStackTrace(); }finally { try { if (st != null) { st.close(); } } catch (Exception e2) { e2.printStackTrace(); }finally { try { if (conn != null) { conn.close(); } } catch (Exception e) { e.printStackTrace(); } } } } }
如果错过了一天,那么真的就错过一天。不抛弃,不放弃。点一盏心灯给自己。
浙公网安备 33010602011771号