-
[Back End] JDBCWeb Development/부스트코스 - Back-End(Java) 2020. 3. 14. 19:29
JDBC(Java Database Connectivity)
- 자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 대한 규약
- 자바 프로그램 내에서 SQL문을 실행하기 위한 자바 API
- SQL과 프로그래밍 언어의 통합 접근 중 한 형태
- JAVA는 표준 인터페이스는 JDBC API 를 제공한다.
- 데이터베이스 벤더 또는 기타 써드파티에서는 JDBC 인터페이스를 구현한 드라이버를 제공한다.
JDBC 단계별 사용 방법
1. import java.sql.*;
2. 드라이버를 로드 한다.
3. Connection 객체를 생성한다.
4. Statement 객체를 생성 및 질의 수행
5. SQL문에 결과물이 있다면 ResultSet 객체를 생성한다.
6. 모든 객체를 닫는다. (객체들을 사용하고 반드시 제거해줘야함, 데이터베이스에 대한 객체의 양이 한정되기 때문)
JDBC 단계별 사용 방법(with 코드)
1. IMPORT
import java.sql.*;
2. 드라이버 로드
Class.forName( "com.mysql.jdbc.Driver" ); //MySQL 데이터베이스 드라이버 로드
Class.forName( "com.mysql.jdbc.Driver" ); //MySQL 데이터베이스 드라이버 로드
3. Connection 얻기
String dburl = "jdbc:mysql://localhost/dbName"; Connection con = DriverManager.getConnection ( dburl, ID, PWD ); //데이터베이스 id, password
[예제1]
//DB 연결 코드를 다음과 같이 함수화하여 사용할 수도 있다. public static Connection getConnection() throws Exception{ String url = "jdbc:oracle:thin:@117.16.46.111:1521:xe"; String user = "bbwwpark"; String password = "bbwwpark123"; Connection conn = null; Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection(url, user, password); return conn; }
4. Statement 생성
Statement stmt = con.createStatement();
5. 질의 수행
ResultSet rs = stmt.executeQuery("SELECT * FROM user WHERE id=1" ); //참고(아래와 같이 쓸 수 있음) /* stmt.execute(“query”); //any SQL stmt.executeQuery(“query”); //SELECT stmt.executeUpdate(“query”); //INSERT, UPDATE, DELETE */
6. ResultSet으로 결과 받기
ResultSet rs = stmt.executeQuery( "select no from user" ); while ( rs.next() ) // rs의 다음 객체(튜플)을 받아온다. 없다면 false 반환 System.out.println( rs.getInt( "no") );
7. Close
rs.close(); stmt.close(); con.close();
[예제2]
public List<GuestBookVO> getGuestBookList(){ List<GuestBookVO> list = new ArrayList<>(); GuestBookVO vo = null; Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try{ conn = DBUtil.getConnection(); String sql = "select * from guestbook"; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while(rs.next()){ vo = new GuestBookVO(); vo.setNo(rs.getInt(1)); vo.setId(rs.getString(2)); vo.setTitle(rs.getString(3)); vo.setConetnt(rs.getString(4)); vo.setRegDate(rs.getString(5)); list.add(vo); } }catch(Exception e){ e.printStackTrace(); }finally { DBUtil.close(conn, ps, rs); } return list; }
[예제3]
public int addGuestBook(GuestBookVO vo){ int result = 0; Connection conn = null; PreparedStatement ps = null; try{ conn = DBUtil.getConnection(); String sql = "insert into guestbook values(" + "guestbook_seq.nextval,?,?,?,sysdate)"; ps = conn.prepareStatement(sql); ps.setString(1, vo.getId()); ps.setString(2, vo.getTitle()); ps.setString(3, vo.getConetnt()); result = ps.executeUpdate(); }catch(Exception e){ e.printStackTrace(); }finally { DBUtil.close(conn, ps); } return result; }
[예제4]
public static void close(Connection conn, PreparedStatement ps){ if (ps != null) { try { ps.close(); } catch (SQLException e) {e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) {e.printStackTrace();} } }
'Web Development > 부스트코스 - Back-End(Java)' 카테고리의 다른 글
[Back End] Rest API (0) 2020.03.14 [Back End] JDBC - 실습 (0) 2020.03.14 [Back End] JSTL, EL, Maven (0) 2020.03.09 [Back End] Scope (0) 2020.03.07 [Back End] Redirect & Forward (0) 2020.03.06