[DB] JDBC를 사용한 JSP와 DB의 연동


  1. JDBC (Java DataBase Connectivity)

JDBC (Java DataBase Connectivity)는 자바 프로그램(JSP포함)과 관계형 데이터 원본(데이터베이스, 테이블 ..)을 연결하는 인터페이스다. JDBC 라이버러리(Library)는 관계형 데이터베이스에 접근하괴, SQL 쿼리문을 실행하는 방법을 제공한다. 즉 , JDBC라는 것은 SQL 명령들을 수행할 수 있게 해주는 방법들을 제공하는 것이다. JDBC 라이브러리는 "java.sql" 패키지에 의해 구현되고 , 이 패키지는 여러 종류의 데이터베이스에 접근할 수 있으며 단일 API를 제공하는 클래스와 인터페이스의 집합이다.

  • JDBC 프로그램의 작성 단계

Packege Import --> JDBC 드라이버 Load --> Connection 객체 생성 --> Statement 객체 생성 --> Query 수행 --> Result 객체로부터 데이터 추출 --> Resultset Close --> Statement Close --> Connection 객체 Close


 (JDBC 드라이버 Load) : 인터페이스 드라이버(interface driver)를 구현(implements)하는 작업으로, Class 클래스의 forName() 메소드를 사용하여 드라이버를 로드한다. forName(String className) 메소드는 문자열로 주어진 클래스나 인터페이스 이름을 객체로 리턴한다.
//Mysql 드라이버 로딩                                                                                                              Class.forName("com.mysql.jdbc.Driver");

Class.forName("com.mysql."jdbc.Driver") 메소드는 드라이버들이 읽히기만 하면 자동으로 객체가 생성되고  DriverManager에 등록된다. 드라이버 로딩은 프로그램 수행시 단 한번만 필요하다.

(Connection 객체 생성) : Connection 객체를 연결하는 것으로 DriverManager에 등록된 각 드라이버들을 getConnection(String url) 메소드를 사용해서 식별한다.

이때 url 식별자와 같은 것을 찾아서 매핑(mapping)한다. 찾지 못하면 no suitable error가 발생한다.
//MySQL 사용시 Connection 객체 생성
Connection conn = DriverManage.getConnection("jdbc:mysql://localhost:3306/basicjsp","jspid","jsppass");
//Oracle 사용시  Connection 객체 생성
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/basicjsp","jspid","jsppass"); 


③ (Statemnet/PreparedStatement/CallableStatement 객체 생성) : sql 쿼리를 생성하며, 반환된 결과를 가져오게 할 작업 영역을 제공한다. Statement 객체는 Connection 객체의 createStatement() 메소드를 사용하여 생성한다.




④ (Query 수행): Statement/PreparedStatement/CallableStatement 객체가 생성되면, 객체의 executeQuery() 메소드나 executeUpdate() 메소드를 사용해서 쿼리를 실행한다.
  • stmt.executeQuery() recordSet반환 => Select 문에서 사용
ResultSet rs = stmt.executeQuery ("select * from 소속기관);

  • stmt.executeUpdate() : 성공한 row()수 반환 => insert문, Update문, Delete문에서 사용
String sql = "update member set passwd="9999" where id='abc'";
stmt.executeUpdate(sql);

⑤ (ResultSet 처리) : executeQuery() 메소드는 수행 결과로 ResultSet을 반환한다. 데이터를 추출하는 방법은 ResultSet 객체에서 한 행씩 이동하면서 getXxx()를 이용해서 원하는 필드 값을 추출한다. 이때 문자열 데이터를 갖는 필드는 rs.getString("name") 혹은 rs.getString(1) 으로 사용한다. 여기서 한 가지 주의할 사항은 자바 계열에서 ResultSet의 첫 번째 필드는 1부터 시작한다. 이들 중 rs.getString("name")과 같이 필드명을 사용하는 것이 권장사항이다.

한 레코드씩 처리되고, 다음 행으로 이동시 next() 메소드를 사용한다.
while (rs.next()){
out.println (rs.getString ("id");
out.println (rs.getString ("passwd");
}











0 개의 댓글:

댓글 쓰기

My Instagram