JSP와 DB연결 - SELECT
앞서 JSP와 Database를 연결하여 Query에 INSERT문장을 작성하여 데이터를 입력하는 처리를 해보았다.
이번에는 마찬가지로 Query에 select문장을 작성하여 데이터베이스의 원하는 데이터를 출력해 보자.
1. JDBC 드라이버를 사용하기 위한 임포트를 한다.
앞서 했던 것 처럼, mySQL 드라이버를 다운받고, 라이브러리에 저장하며, JDBC객체를 사용하기 위한 준비를 한다.
드라이버 로딩.
2. JDBC 객체 초기화.
JDBC의 객체로 객체참조변수를 선언하고 null로 초기화 하는 작업이다.
앞서 했던 INSERT 쿼리를 작성하는 과정에서는 사용하지 않았던 ResultSet 이라는 객체를 새로 가져와야 한다.
이는 나중에 쿼리문의 결과를 받아 결과를 사용(조건문,반복문 등 응용)하는데 필요하다.
3. 예외처리
예외처리를 하기 위해 try - catch 문을 사용하였다. try부분에서 에러를 감지하게 되면 catch 부분에서 예외처리를 해주는 역할을 한다.
4. DataBase 연결 Connection
DataBase와 JSP파일을 연결하기 위해서는 기본적으로 DataBase의 정보가 필요로 한다.
- 아이피, 포트, 데이터베이스를 포함한 정보를 String타입 변수에 담는다.
- 유저 아이디를 String타입 변수에 담는다.
- 유저 패스워드를 String타입 변수에 담는다.
과정 1에서 임포트 한 DriverMager라는 클래스의 getConnection 메소드에 위에 선언한 데이터베이스의 정보를 가진 변수를 입력하고, Connection클래스타입 객체참조변수에 할당한다.
여기까지는 모든 데이터베이스 연결과 동일하듯, 코드 또한 동일할 수 있다.
5. Query문 작성, Statement 객체 생성.
Query문을 Connection 클래스 데이터타입 객체참조 변수의 (리턴)값이 가리키는 클래스의 메소드 preparedStatement에 입력한 후 PreparedStatement클래스 데이터 타입 객체참조 변수에 할당한다.
이때 insert 하는 방법과 다르게 Query문에 차이가 있다.
쿼리문을 sql편집기에 그대로 입력한 결과, tb_member라는 테이블의 모든 데이터가 출력이 된다.
이처럼 select문은 테이블의 정보를 출력해 준다.
6. 쿼리 실행, 결과 가져오기
쿼리를 실행하기 위한 방법은 PreparedStatement클래스 데이터 타입 객체참조 변수의 리턴값이 가리키는 클래스의 메소드 Excute~~ 를 실행하면 된다.
1) excute: boolean 타입의 값을 반환한다.
2) excuteUpdate: SELECT 구문을 제외한 다른 구문을 사용시 int 값을 반환한다.
3) excuteQuery: SELECT 구문을 실행시 ResultSet의 값을 반환한다.
SELECT 구문을 실행하기 위해 excuteQuery 메소드를 사용하여 작성한 쿼리문을 실행하고, 그 값을 ResultSet타입의 변수에 할당한다.
반복문과 next() 메서드
pstmt.executeQuery() - 쿼리문장을 실행하고 실행에 성공하였으면 1을반환, 실패했으면 0을반환한다.
rs에 1 값이 담겨있다면, 다음 행으로 커서를 이동시킨다는 의미. 한 행씩 수행하겠다는 의미이다.
insert에서 pstmt.setString라는 문장을 사용해본적이 있을 것이다. 이처럼 쿼리 실행 결과가 할당된 rs의 값을 getString 해온다.
실행하게 되면, 데이터베이스 내의 모든 데이터가 화면에 출력될 것이다.
7. 객체 종료 - close()
메모리 낭비를 줄이기 위해 사용했던 객체들을 종료시킨다.
rs.close()- resultSet 객체 종료
pstmt.close()- PreparedStatement 객체 종료
conn.closes()- Connection 객체 종료
'Web Language > JSP' 카테고리의 다른 글
JSP와 DB연결 - DELETE (0) | 2020.04.01 |
---|---|
JSP와 DB연결 - UPDATE * (0) | 2020.04.01 |
JSP와 DB연결 (0) | 2020.04.01 |
Session(세션) * (0) | 2020.04.01 |
include 활용 * (0) | 2020.04.01 |