oracle jdbc 연결 ( 원시적 방법 )
oracle jdbc 연결 ( 원시적 방법 )
오늘은 원시적인 방법으로 jsp에서 oracle jdbc를 연결하여 oracle db에 접근하는 걸 공부했다.
한번 알아보도록 하자! 😀
- jdbc에 연결하려면 OracleDriver를 로드해줘야 하는데 이를 위해서 먼저 oracle 설치폴더에 있는 ojdbc6.jar 파일을 Java Build Path 라이브러리와 webapp의 lib에 추가해주어야 한다.
( Servlet-api.jar 추가할 때처럼 하면 된다. )
내 컴퓨터 경로 : C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar
- jar가 준비 되었으니 이제 jsp파일에서 jdbc를 연결을 위한 준비를 해보자.
jdbc연결을 위한 준비단계가 필요하다.
위 사진을 보면 driver , url , user , password를 String 변수로 미리 준비하는데 jdbc 연결에 필요한 것들이다.
쓰임을 알아보자.
driver : 받은 jar에 들어있는 OracleDriver 경로이다. Class.forName() 메서드의 매개변수에 위 경로를 넣어주면 OracleDriver가 로드된다.
Driver가 로드 되어야 DriverManger로 jdbc에 connect 할 수 있다.
url : 로드된 Driver를 이용해 jdbc에 연결할 것인데 그때 사용될 url이다.
user , password : 연결될 user명과 password이다.
( DBeaver에서 미리 만들어 두었다! )
- 준비가 다 되었으니 OracleDriver 부터 로드해보자.
오라클 드라이버가 정상적으로 로드된다면 위 프린트문을 읽을 것이고, 그렇지 않다면 Class Not FoundException 같은 예외가 발생 할 것이다.
- 드라이버가 성공적으로 로드 되었다. 그럼 이제 DriverManger를 이용하여 jdbc를 연결해보자!
Connection 객체에 받아 사용할 수 있게 되어있다. Connection 객체에 받아 사용하자.
- 오라클 jdbc까지 연결에 성공했다. 그럼이제 conn 객체를 이용해서 쿼리문을 날려 볼건데, 그전에 DB에 테스트할 테이블을 하나 만들어야 한다!
📌 insert
- 위와같은 테이블을 하나 준비했다.
그럼 먼저 jsp에서 insert 쿼리문을 날려 db에 데이터가 추가되는지 확인해보자!
conn 객체의 메서드인 prepareStatemnet()는 파라미터의 쿼리문을 준비시켜주는 메서드이다. 이 메서드를 PreParedStatement 객체에 담고 이 객체로 executeUpdate() 메서드를 실행하면 이제 쿼리가 실행되는데, 이 쿼리문이 성공했는지 안했는지는 int 리턴값으로 확인 할 수 있다. 0을 리턴한다면 실패한 것!
성공이 출력되었다. 디비버로 데이터가 삽입되었는지 확인해보자.
DB에 데이터가 삽입된 걸 확일 할 수 있다!
📌 select
- 데이터 삽입(insert)이 성공적으로 되었다. 이제 조회(select)는 어떻게 하는지 보자.
pstm 객체에 sql을 준비하는 것 까진 insert와 같다. 단 select문은 update와는 다르게 executeQuery() 메서드를 사용하는데, 반환값은 ResultSet이다.
ResultSet에는 select된 데이터들이 담기게 되며 ResultSet 객체.get???() 메서드로 데이터를 꺼내 사용할 수 있다. ( 여기서 ???는 String , int , Date 등 데이터의 데이터 형에 따른다 ) 매개변수로는 컬럼 번호나 컬럼 이름 둘중 하나를 넣어주면 된다.
🚫 위 객체들은 사용을 끝냈으면 .close() 로 열었던 순서대로 닫아줘야 한다 ( Stream 처럼 )
자 그럼 out.println()로 한번 찍어보자~!
성공적으로 데이터들이 잘 찍힌다!
- 성공적으로 조회를 마쳤다. 하지만 특정 조건이 들어갔을땐 어떻게 해야할까? 알아보도록 하자!
실험을 위해 row를 하나 더 추가해 주었다.
이전 코드에서 달라진건 where 조건에 ? 를 넣고 pstm.setString() 메서드가 추가되었다. 각 쿼리문에 ?가 여러개 들어갈 수 있어 첫번째 파라미터엔 ?의 번호 (첫번째 물음표인지 두번째 물음표인지) 가 들어가고 두번째 파라미터엔 각 ?에 들어갈 값이 들어간다.
성공적으로 태순이가 찍히는걸 볼 수 있다.
오늘은 원시적으로 jdbc에 연결해 jsp에서 oracle 쿼리문을 날리는걸 해보았다. 사실 실무에선 위처럼 너무 복잡 , 불편하게 하지 않고 더 선진된 방식을 사용한다고 하는데, 실제로 jdbc에 어떻게 연결이 되고 쿼리문이 어떻게 날아가는지를 어느정도는 알게 된 유익한 시간이었다. 😉