JDBC工具类的编写

封装工具类

为了减少代码工作量,将JDBC注册、获取连接、释放连接封装为一个工具类;
具体代码如下:

public class JDBCUtils {
        private static String url;
        private static String user;
        private static String password;
        private static String driver;
        static{
            try {
                Properties pro = new Properties();
                //获取src路径下的文件的方式
                ClassLoader classLoader = JDBCUtils.class.getClassLoader();
                URL res = classLoader.getResource("jdbc.properties");
                String path = res.getPath();
                System.out.println(path);
                //加载文件
                pro.load(new FileReader(path));

                url = pro.getProperty("url");
                user = pro.getProperty("user");
                password = pro.getProperty("password");
                driver = pro.getProperty("driver");
                Class.forName(driver);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        // 获取连接
        public static Connection getConnection() throws SQLException {
            return DriverManager.getConnection(url,user,password);
        }
        //释放连接
        public static void close(Statement stmt,Connection conn){
            if(stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }if(conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        //重载close()
        public static void close(ResultSet rs, Statement stmt, Connection conn){
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if(stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
}

src 下 jdbc.properties 内容如下:

url=jdbc:mysql:///xxx?serverTimezone=UTC 
user=root
password=root
driver=com.mysql.cj.jdbc.Driver

如果你数据库连接默认为 locahost:3306 则可以简写为///+数据库名称,?serverTimezone=UTC 是为了避免时区不同问题;

调用工具类

调用工具类具体实例如下:

public class JDBCdemo08 {

    public static void main(String[] args) {
        List<Emp> list = new JDBCdemo08().findAll();
        System.out.println(list);
        System.out.println(list.size());
    }
    public List<Emp> findAll(){
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        List<Emp> list = null;
        try {
            //获取连接
            conn = JDBCUtils.getConnection();
            //执行sql语句
            String sql = "select *from admin";
            stmt = conn.createStatement();
            //获取返回列表
            rs = stmt.executeQuery(sql);
            Emp emp = null;
            list = new ArrayList<Emp>();
            while(rs.next()){
                int id = rs.getInt("aid");
                String name = rs.getString("aname");
                int password = rs.getInt("apassword");
                String sex = rs.getString("asex");
                int age = rs.getInt("aage");
                emp = new Emp();
                emp.setId(id);
                emp.setName(name);
                emp.setSex(sex);
                emp.setPassword(password);
                list.add(emp);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.close(rs,stmt,conn);  //释放资源
        }
        return list;
    }

}
发布了28 篇原创文章 · 获赞 0 · 访问量 722

猜你喜欢

转载自blog.csdn.net/William_GJIN/article/details/104690706
今日推荐