封装JDBC工具类,并使用封装的工具类删除、查询数据库的元素

如果每使用一次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);
        }
    }
}
View Code

猜你喜欢

转载自www.cnblogs.com/pxy-1999/p/13379005.html