1. JDBC 드라이버 로드
데이터베이스별 제조사(Vendor)가 제공하는 드라이버가 필요합니다
Class.forName("드라이버명");
→ ojdbc6.jar가 없거나 "oracle.jdbc.driver.OracleDriver" 오타 등의 오류가 날 경우 ClassNotFoundException 발생
드라이버 종류 | 사용 방법 |
Access(ODBC) | Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") |
MS-SQL | Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver") |
Oracle | Class.forName("oracle.jdbc.driver.OracleDriver"); |
MySQL | Class.forName("com.mysql.jdbc.Driver") |
2. 데이터베이스 연결 객체 생성
DriverManager.getConnection(URL, user, password);
→ 오타가 날 경우 SQLException 발생
데이터베이스별 URL | |
Access(ODBC) | jdbc:odbc:ODBC명 |
MySQL | jdbc:mysql://localhost:3306/DB명 |
Oracle | jdbc:oracle://localhost:1521:SID |
MSSQL | jdbc:Microsoft:sqlserver://localhost:1433;databasename=DB명 |
3. SQL문 실행
프로그램에서 Statement 객체 또는 PreparedStatement 객체를 이용하여 DB에 쿼리문을 전송하고 결과값을 반환 받음
3-1. Statement
- 보안 취약, 작성 방법 까다로움
- SQL 구문을 실행하는 역할
- 스스로는 SQL 구문을 이해하지 못하기 때문에 전달 역할
- SQL 관리 O, 연결 정보 X
Statement stmt = null; //연결 객체 생성
stmt = conn.createStatement();
String sql = "insert into emp(num, name, dept, score) values (emp_seq.nextval, '" + name + "','" + dept + "','" + score + "')";
int n = stmt.executeUpdate(sql); //쿼리문 전송
3-2. PreparedStatement
- Statement 클래스의 기능 향상
- 인자와 관련된 작업 특화(매개변수)
- 코드 안정성, 가독성 높음
- 코드량이 증가 -> 매개변수를 set해줘야 하기 때문에
- 텍스트 SQL 호출
PreparedStatement pstmt = null;
String sql = "insert into book(isbn, title, author, price) values (101, 'HTML5', '강둘리', 25000)";
String sql2 = "insert into book(isbn, title, author, price) values (?, ?, ?, ?)";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, a);
pstmt.setString(2, 2);
pstmt.setString(3, c);
pstmt.setInt(4, d);
int n = pstmt.executeUpdate();,
4. 결과 반환
프로그램과 DB의 연결 해제
executeQuery(): ResultSet | select | 전체(표) 출력하는 경우 |
executeUpdate(): int | insert, update, delete, create | 각각의 값을 적용하는 경우 |
ResultSet rs = stmt.executeQuery(); //select쿼리문의 결과를 가져옵니다. Cursor의 위치를 이동해서 행row을 가리킵니다. 데이터는 getter()로 가져옵니다.
int n = stmt.executeUpdate();
5. 연결 해제
rs.close();
stmt.close();
conn.close();
'Java Server Pages' 카테고리의 다른 글
JSP 클라이언트 에러 암기 (0) | 2024.01.31 |
---|---|
Servlet (0) | 2024.01.30 |
Java Data Base Connectivity (0) | 2024.01.15 |
컬렉션 프레임워크 (1) | 2024.01.04 |
스레드, 제네릭 (1) | 2024.01.04 |