Programming/JAVA

JDBC Statement 처리순서

Jayna. 2024. 1. 13. 16:47
728x90

 

 

MVC 패턴 / ojdbc6.jar / Statement 와 PreparedStatement / ClassNotFoundException

1. MVC 패턴 Model 데이터와 관련된 역할. 데이터를 담는다거나, DB에 접근해서 데이터 입출력 View 사용자가 보게 될 시각적인 요소 / 화면 (입력, 출력) Controller 사용자의 요청을 받아서 처리 후 응답

jaynarecord.tistory.com

 

JDBC 처리순서 / 오라클 oracle 연동

MVC 패턴 / ojdbc6.jar / Statement 와 PreparedStatement / ClassNotFoundException 1. MVC 패턴 Model 데이터와 관련된 역할. 데이터를 담는다거나, DB에 접근해서 데이터 입출력 View 사용자가 보게 될 시각적인 요소 /

jaynarecord.tistory.com

 

 

SELECT문 => executeQuery() 실행

UPDATE / INSERT / DELETE => executeUpdate() 실행

 

728x90

SELELCT문 

public ArrayList<Member> selectByUserName(String keyword) {		
    // 0) 필요한 변수들 셋팅
    ArrayList<Member> list = new ArrayList<>(); 

    Connection conn = null;
    Statement stmt = null;
    ResultSet rset = null;

    // 실행할 SQL문
    // SELECT * FROM MEMBER WHERE USERNAME LIKE '%xxx%';
    String sql = "SELECT * FROM MEMBER WHERE USERNAME LIKE '%"+keyword+"%'";

    try {
        // 1) JDBC Driver 등록
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // 2) Connection 객체 생성
        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");

        // 3) Statement 객체 생성
        stmt = conn.createStatement();

        // 4,5) SQL문(SELECT)을 전달해서 실행 후 결과 받기
        rset = stmt.executeQuery(sql);

        // 6_1) 
        while(rset.next()){		
            list.add(new Member(rset.getInt("USERNO")
                    , rset.getString("USERID")
                    , rset.getString("USERPWD")
                    , rset.getString("USERNAME")
                    , rset.getString("GENDER")
                    , rset.getInt("AGE")
                    , rset.getString("EMAIL")
                    , rset.getString("PHONE")
                    , rset.getString("ADDRESS")
                    , rset.getString("HOBBY")
                    , rset.getDate("ENROLLDATE")));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                // 7) 다 쓴 JDBC용 객체를 반납 ( 생성된 순서의 역순으로)
                rset.close();
                stmt.close();			
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        // 8)
            return list;
}

 

DML문

public int updateMember(Member m) {
    // UPDATE문 => 처리된 행의 개수(int) => 트랜잭션 처리
    // 0) 필요한 변수들 먼저 셋팅
    int result = 0; // 처리된 결과(행 수)를 담아줄 변수

    Connection conn = null;  // 접속된 DB의 연결정보를 담는 변수
    Statement stmt = null;   // SQL문 실행 후 결과를 받기 위한 변수

    // 실행할 SQL문 
    // UPDATE MEMBER SET USERPWD = 'XXX', EMIL = 'XXX', PHONE = 'XXX', ADDRESS = 'XXXX' WHERE USERID = 사용자가 입력한 아이디 m.getUserId();

    String sql = "UPDATE MEMBER "
                + "SET USERPWD = '" + m.getUserPwd() + "',"
                + "EMAIL = '" + m.getEmail()+ "',"
                + "PHONE = '" + m.getPhone() + "',"
                + "ADDRESS = '" + m.getAddress()+ "'"
                + "WHERE USERID = '" + m.getUserId()+ "'";

    try {
        // 1) 
        Class.forName("oracle.jdbc.driver.OracleDriver");
        //2)
        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "JDBC","JDBC");
        // 3)
        stmt = conn.createStatement();

        // 4,5) 
        result = stmt.executeUpdate(sql);

        // 6_2) 트랜잭션 처리
        if(result > 0 ) { // DML 처리가 된 row가 1개 이상 있다
            conn.commit();
        }else { // 없음
                conn.rollback();
        }
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {	
        try {
            // 7)
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    //8)
    return result;
}
728x90