1.드라이버 로드
properties
- 로드 원하는 프로젝트에서 properties 들어갑니다.
Add external JARs
- Java Build Path 에서 Add external JARs 클릭
ojdbc.jar 파일 열기
JDBC 드라이버 로딩 완료
2. Connection DB 연결 : 통로생성하고 연결하는 작업
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:xe",
String id = "id";
String pw = "pw";
Connection conn = DriverManager.getConnection(url, id, pw);
Class.forName("경로")
- Driver Class를 로딩하여 객체 생성
- 생성된 객체는 DriverManager에 등록
- 드라이버 빌드패스 설정여부 확인용
DriverManager 클래스
- 로드된 JDBC 드라이버를 통해서 Connection 활성화 해주는 객체
- DriverManager.getConnection() 메소드로 Connection 객체 생성
Connection
- DB와 연결하는 객체
- DriverManager.getConnection()은 url,id,pw 매개변수 갖음
3. Statement SQL 쿼리 실행
String sql = "insert into model1 values(?,?,?)";
PreparedStatement psmt = conn.PreparedStatement(sql);
psmt.setString(1, id);
psmt.setString(2, pw);
psmt.setString(3, name);
int cnt = psmt.executeUpdate();
PrepareStatement() 메서드
- sql 문 전달해 PreparedStatement 객체 생성
- SQL문장 실행하고 결과를 반환하는 기능들을 캡술화 한 인터페이스
- Statement 상속 받고 있음
- Statement 상속 받고 있기 때문에, Statement 보다 추가된 기능 사용할 수 있음
- setString()로 sql문 ?값을 넣어줄 수 있음
- 매개변수 => (?의 위치 숫자 , 넣어줄 값)
- 이때 "?"가 아닌 그냥?를 사용
- 매개변수 => (?의 위치 숫자 , 넣어줄 값)
4.execute() 결괏값 처리
execute() 메소드를 사용해서 SQL쿼리 실행 후 결괏값 저장
위에서 insert구문 실행시켰기 때문에 리턴값으로 int 값을 받음
만약, select구문을 실행 시켰다면 Resultset객체로 값을 리턴 받은 후,
next()메소드와 getInt(),getString() 등의 메소드를 통해 값을 가져올 수 있다
next() : 테이블의 다음 행 가리켜줌
get() : 매개변수로 쓰인 숫자의 위치에 있는 값을 가져옴
실행메소드
메소드명(매개변수) | 리턴타입 | 기능 |
execute() | boolean | sql문 실행 성공하면 false를 리턴 모든 구문 수행가능 |
executeQuery() | ResultSet | Select 구문실행 ResultSet객체의 값을 리턴 |
executeUpdate() | int | Select 이외의 구문 실행 int 타입의 값리턴 insert,update,delect문 실행하고 영향을 받은 행의개수 반환 create,drop관련 구문에서는 -1 반환 |
close() | void | PreparedStatement의 자원 반납 |
String sql = "Select * from model1 where user = ?"
try{
psmt = conn.prepareStatment(sql);
psmt.setString(1,id);
rs = psmt.executeQuery();
if(rs.next()){
int num = rs.getInt(1);
String id = rs.getString(2);
String pw = rs.getString(3);
}
dto = new Model1DTO(num, id, pw);
5.close() DB 연결 해제
통로를 연결하고 작업을 처리했기 때문에 연결했던 통로를 다시 닫아줘야함
꼭 열었던 순서의 역순으로 닫아 줘야함
닫아야 할 자원의 값이 null이라면 Error가 발생하기 때문에, if문 조건을 걸어줌
try{
if (rs != null){
rs.close();
}
if (psmt != null){
psmt.close();
}
if (conn != null){
conn.close();
} catch(SQLexception e){
e.printStackTrace();
}
}
'JAVA > JDBC' 카테고리의 다른 글
sqldeveloper 이용한 vo sql (0) | 2024.01.09 |
---|