JDBCツールクラスの抽出


文書ディレクトリ
  • 一、概念
  • 二、コード実装
  • 一、概念
    書くのを簡単にするためです
    分析:
    1)       
    (2*   :      (  ),           。
    			*   :    
    				jdbc.properties
    					url=
    					user=
    					password=3

    二、コード実装
  • 作成プロファイル:jdbc.properties(同じプロジェクトのsrcディレクトリの下に置く必要がある)
  • url=jdbc:mysql:///db
    user=root
    password=root
    driver=com.mysql.jdbc.Driver
    

    これにより、後でデータベースを交換するたびに、このプロファイルを変更するだけで、呼び出しによって使用することができる.JDBCUtilsを作成し、上記の分析のニーズをカプセル化する
    /**
     * JDBC   
     */
    public class JDBCUtils {
        private static String url;
        private static String user;
        private static String password;
        private static String driver;
        /**
         *      ,              ,       (          )
         */
        static{
            //      ,   。
    
            try {
                //1.   Properties   。
                Properties pro = new Properties();
    
                //  src         --->ClassLoader     
                ClassLoader classLoader = JDBCUtils.class.getClassLoader();
                //            url  
                URL res  = classLoader.getResource("jdbc.properties");
                String path = res.getPath();//        
          
                //2.     
                pro.load(new FileReader(path));
    
                //3.     ,  
                url = pro.getProperty("url");
                user = pro.getProperty("user");
                password = pro.getProperty("password");
                driver = pro.getProperty("driver");
                //4.     
                Class.forName(driver);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        /**
         *     
         * @return     
         */
        public static Connection getConnection() throws SQLException {
    
            return DriverManager.getConnection(url, user, password);
        }
    
    	//    ,            
        /**
         *     
         * @param stmt
         * @param conn
         */
        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();
                }
            }
        }
        /**
         *     
         * @param stmt
         * @param conn
         */
        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();
                }
            }
        }
    }
    

    JDBCツールクラスのjdbcDemoを呼び出す
    /**
     * *       ,  emp           ,      ,  。
     */
    public class JDBCDemo8 {
    
        public static void main(String[] args) {
            List<Emp> list = new JDBCDemo8().findAll();
            System.out.println(list);
            System.out.println(list.size());
        }
        
        /**
         *   JDBC   
         * @return
         */
        public List<Emp> findAll(){
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;
            List<Emp> list = null;
            try {
                conn = JDBCUtils.getConnection();
                //3.  sql
                String sql = "select * from emp";
                //4.    sql   
                stmt = conn.createStatement();
                //5.  sql
                rs = stmt.executeQuery(sql);
                //6.     ,    ,    
                Emp emp = null;
                list = new ArrayList<Emp>();
                while(rs.next()){
                    //    
                    int id = rs.getInt("id");
                    String ename = rs.getString("ename");
                    int job_id = rs.getInt("job_id");
                    int mgr = rs.getInt("mgr");
                    Date joindate = rs.getDate("joindate");
                    double salary = rs.getDouble("salary");
                    double bonus = rs.getDouble("bonus");
                    int dept_id = rs.getInt("dept_id");
                    //   emp  ,   
                    emp = new Emp();
                    emp.setId(id);
                    emp.setEname(ename);
                    emp.setJob_id(job_id);
                    emp.setMgr(mgr);
                    emp.setJoindate(joindate);
                    emp.setSalary(salary);
                    emp.setBonus(bonus);
                    emp.setDept_id(dept_id);
    
                    //    
                    list.add(emp);
                }
    
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JDBCUtils.close(rs,stmt,conn);
            }
            return list;
        }
    }