Java Server Pages

JDBC를 이용하는 프로그램 작성

나주나주 2024. 1. 16. 14:34

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