java如何封装JDBC工具类呢?
下文笔者讲述JDBC工具类的简介说明,如下所示
我们只需编写一个DbUtil工具类
即可在后续中使用
例:JDBC工具类
public class DBUtil {
//静态变量:在类加载时候执行,并且是有先后顺序的.自上而下
private static ResourceBundle bundle=ResourceBundle.getBundle("resource1.jdbc");
private static String driver=bundle.getString("driver");
private static String url=bundle.getString("url");
private static String username=bundle.getString("username");
private static String password=bundle.getString("password");
static{
//注册驱动(注册却动只需要注册一次,放在静态代码块当中.DBUtil类加载的时候执行)
try {
//"com.mysql.jdbc.Driver"是连接数据库的驱动,不能写死,因为可能以后改成Oracle数据库
//如果连接Oracle数据库的时候,还需要修改java代码,显然违背OCP开闭原则
//OCP开闭原则:对扩展开发,对修改关闭.(什么是复合OCP呢?在进行功能扩展的时候,不需要修改java源代码)
//Class.forName("com.mysql.cj.jdbc.Driver");
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取数据库连接对象 抛异常,谁使用,谁负责
public static Connection getConnection() throws SQLException {
Connection connection = DriverManager.getConnection(url, username, password);
return connection;
}
//关闭连接 释放资源
/**
* 释放资源
* @param conn 数据库连接对象
* @param st 执行对象
* @param rs 结果集对象
*/
public static void close(Connection conn,Statement st,ResultSet rs){
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
工具类使用代码
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
int count=0;
try {
conn = DBUtil.getConnection();
//是否开启事务(关闭自动提交) 看具体情况
conn.setAutoCommit(false);
conn.commit();
} catch (SQLException e) {
//回滚
if(conn!=null){
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
}
e.printStackTrace();
}finally {
//释放资源
DBUtil.close(conn, ps, null);
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


