[JSP] JDBC를 사용한 데이터베이스 연동
JDBC를 사용한 데이터베이스 연동
1. JDBC (Java Database Connectivity)
- JDBC는 자바 프로그램과 관계형 데이터 원본에 대한 인터페이스이다. JDBC 라이브러리(Library)는 관계형 데이터베이스에 접근하고, SQL 쿼리문을 실행하는 방법을 제공한다.
- JDBC 라이브러리는 'java.sql' 패키지에 의해 구현되고, 이 패키지는 여러 종류의 데이터베이스에 접근할 수 있다. 'java.sql' 패키지는 단일 API를 제공하는 클래스와 인터페이스의 집합이다.
- JDBC 드라이버들은 일반적으로 JDBC_-ODBC브리지 + ODBC 드라이버 (JDBC-ODBC Bridge Plus ODBC Drive), 네이티브-API 부분적인 자바 드라이브(Native-API Partly-Java Driver), JDBC-Net 순수 자바 드라이버(JDBC-Net Pure Java Driver), 네티이브-프로토콜 순수 자바 드라이버(Native-Protocol Pure Java Driver) 등의 4가지 타입의 JDBC 드라이버를 제공한다.
- 4가지 드라이버 타입들 중 네이티브-프로토콜 순수 자바 드라이버(Native-Protocol Pure Java Driver)를 사용하겠다.
2. JDBC를 사용한 JSP와 데이터베이스의 연동
(1) JDBC 프로그램의 작성 단계
① 1단계 (JDBC 드라이버 Load)
- 인터페이스 드라이버(interface driver)를 구현(implements)하는 작업으로, Class 클래스의 forName() 메소드를 사용해서 드라이버를 로드한다. forName(String className) 메소드는 분자열로 주어진 클래스나 인터페이스 이름을 객체로 리턴한다.
- MySQL 드라이버 로딩
Class.forName("com.mysql.jdbc.Driver");
- Oracle 드라이버 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
- Class.forName("com.mysql.jdbc.Driver") 은 드라이버들이 읽히기만 하면 자동 객체가 생성되고 DriverManager에 등록된다. 드라이버 로딩은 프로그램 수행 시 한 번만 필요하다.
② 2단계 (Connection 객체 생성)
- Connection 객체를 연결하는 것으로 DriverManager에 등록된 각 드라이버들을 getConnection(String url) 메소드를 사용해서 식별한다. 이때 url 식별자와 같은 것을 찾아서 매핑(mapping)한다. 찾지 못하면 no suitable error 가 발생한다.
- MySQL 사용시 Connection 객체 생성
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsptest", "jspid","jsptest");
- Oracle 사용시 Connection 객체 생성
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ora817", "scott", "tiger");
③ 3단계 (Statement/PreparedStatement/CallableStatement 객체 생성)
- sql 쿼리를 생성/실행하며, 반환된 결과를 가져오게 할 작업 영역을 제공한다.
- Statement 객체는 Connection 객체의 createStatement() 메소드를 사용하여 생성된다.
Statement stmt = conn.createStatement();
④ 4단계 (Query 수행)
- Statement 객체가 생성되면 Statement 객체의 executeQuery() 메소드나 executeUpdate() 메소드를 사용해서 쿼리를 처리한다.
- stmt.executeQuery : recordSet 반환 => Select 문에서 사용
ResultSet rs = stmt.executeQuery("select * from 소속기관");
- stmt.executeUpdate() : 성공한 row 수 반환 => Insert문, Update문, Delete문에서 사용
String sql = "update member1 set passwd = '3579' where id ='abc'";
stmt.executeUpdate(sql);
⑤ 5단계 (ResultSet 처리)
- executeQuery() 메소드는 결과로 ResultSet을 반환한다. 이 ResultSet으로부터 원하는 데이터를 추출하는 과정을 말한다.
- 데이터를 추출하는 방법은 ResultSet 에서 한 행씩 이동하면서 getXxx()를 이용해서 원하는 필드 값을 추출하는데, 이때 rs.getString("name") 혹은 rs.getString(1) 을 사용한다.
- ResultSet의 첫 번째 필드는 1 부터 시작한다.
- 한 행이 처리되고 다음 행으로 이동 시 next() 메소드를 사용한다.
while(rs.next()){
out.println(rs.getString("id"));
out.println(rs.getString("passwd");
}
출처: https://hyeonstorage.tistory.com/110?category=554979 [개발이 하고 싶어요]
'Java 관련 > JSP,Servlet' 카테고리의 다른 글
[JSP] 웹에서 쿠키(Cookie)의 사용 (0) | 2019.07.17 |
---|---|
[JSP] JDBC 에서의 트랜잭션 처리 (0) | 2019.07.17 |
[JSP] JDBC 사용 예제 (0) | 2019.07.17 |
[JSP] JDBC 프로그래밍에 사용되는 객체 (0) | 2019.07.17 |
[JSP] web.xml 에러 페이지 처리 (0) | 2019.07.17 |
[JSP] HTTP 에러코드 정리 (0) | 2019.07.17 |
[JSP] 자바빈 액션태그 <jsp:useBean> (0) | 2019.07.17 |
[JSP] forward 액션 태그 <jsp:forward > (0) | 2019.07.17 |