ORACLE SQL

SQL JDBC 회원 관리 프로그램_selectLIst

최종군 2024. 8. 4. 19:29

 

 

 

 

 

 

controller 클래스 

 

public void selectList() {
    ArrayList<Member> list = new MemberService().selectList();
    
    if (list.isEmpty()) {
       
        new MemberMenu().displayNoData("전체 조회 결과가 없음!");
    } else {
        new MemberMenu().displayMemberList(list);
    }
}

 

 

ArrayList<Member> list = new MemberService().selectList();

 

ArrayList<Member> 참조 변수 list를 생성을 하고 

생성자로 MemberService().selectList()로 생성을 한다 

 

이는 list 안에 데이터가 없다면 displayNoData() 메소드에

"전체 조회 결과가 없음"을 반환을 해주기 위함이다 

 

반대로 list안에 조회할 데이터가 있다면 list를 출력해준다 

list를 출력을 해도 toSting이 오버라이딩이 되어있으므로 

정상적으로 조회가 가능하다 

 

 

MemberService 클래스 :

public ArrayList<Member> selectList(){

    Connection conn = JDBCTemplate.getConnection();

    ArrayList<Member> list = new MemberDao().selectList(conn);

    JDBCTemplate.close(conn);


    return list;

}

 

 

 


 

 

JDBCTemplate 클래스의 

getConnection 메소드 

 

1) 

Connection 객체를 생성해준다 

try문 밖에다가 생성을 해주므로 변수 스코프를 늘릴 수 있다 

try문 밖에다가 null로 Connection 객체를 초기화 시켜준다

 

 

 

public static Connection getConnection() {
    Connection conn = null;

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        // Class.forname()메서드를 사용하여 런타임에 클래스를 동적으로 로드 
        // OracleDriver가 클래스가 로드되면 이 클래스는 자체적으로 DriverManager에 
        // 등록이 된다. 


        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe"
                ,"C##JDBC"
                ,"JDBC");
        // DriverManager 드라이버 목록을 유지하며 
        // 목록을 사용하여 데이터베이스 연결 

        conn.setAutoCommit(false);
        // 기본적으로 자동관리이므로 수동관리를 위하여 꺼 둠 


    }catch(ClassNotFoundException e) {
        e.printStackTrace();
    }catch(SQLException e) {
        e.printStackTrace();
    }
    return conn;
}

 

 

Class.forname()에 동적으로 저장된 

OracleDriver 클래스를 저장이 되면 클래스는 자체적으로

DriverManager에 등록이된다 

 

 

 

conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe"
        ,"C##JDBC"
        ,"JDBC");

 

DriverManager에 등록된

OracleDriver 클래스를

getConnection메소드를 통해서 

연결을 시켜준다 

 

JDBC는 일반적으로 자동관리이므로 

수동관리를 위하여 

setAutoCommit(false);를 적용 시켜서 

수동관리로 전환을 시킨다 


 

MemberDAO 클래스 : 

 

public ArrayList<Member> selectList(Connection conn){

    ArrayList<Member>list = new ArrayList<Member>();

    PreparedStatement pstmt = null;
    ResultSet rset = null;
    //---
    String sql = "SELECT * FROM MEMBER ";

    try {

        pstmt = conn.prepareStatement(sql);
        rset = pstmt.executeQuery();

        while(rset.next()) {
            Member m  = new Member(
                    rset.getInt("USERNO"),
                    rset.getString("USERID"),
                    rset.getString("USERPW"),
                    rset.getString("USERNAME"),
                    rset.getString("GENDER"),
                    rset.getInt("AGE"),
                    rset.getString("EMAIL"),
                    rset.getString("ADDRESS"),
                    rset.getString("PHONE"),
                    rset.getString("HOBBY"),
                    rset.getDate("ENROLLDATE")
            );

            list.add(m);
        }

    }catch(SQLException e) {
        e.printStackTrace();
    }finally {

        JDBCTemplate.close(rset);
        JDBCTemplate.close(pstmt);
    }

    return list;

} 

 

결과 내용을 반환해줄 

Member 매개변수타입 ArrayList 객체를 인스턴스화를 한다 

 

1)  : ArrayList 객체 생성과 PreparedStatement 객체 생성

 

ArrayList<Member>list = new ArrayList<Member>();

PreparedStatement 객체를 생성하고 

ResultSet 객체를 생성한다. 

 

PreparedStatement pstmt = null;
ResultSet rset = null;

 

조회를 위한 쿼리문을 작성을 한다 

String sql = "SELECT * FROM MEMBER ";

 

 

ResultSet은 SELECT문의 결과를 저장하는 객체이다 

selectLIst() 메소드는 조회를 위한 메소드이므로 

ResultSet 객체도 생성을 해주어야 한다