728x90
반응형
JDBC(Java DataBase Connection) |
|
- 자바와 DB를 연동하는 기술 - 오라클 연동에 관련된 인터페이스들은 java.sql패키지 안에 들어가 있다. java.sql.Connection : DB의 계정과 비번, url정보를 담고있는 객체 java.sql.Statement : DB의 SQL명령을 담을 수 있는 객체 java.sql.PreparedStatement : DB의 SQL명령을 담을 수 있는 객체 java.sql.ResultSet : select명령을 실행 후 가져오는 데이터의 결과 집합(레코드들의 묶음->인스턴스들)을 가리키고 있는 오라클의 커서와 동일한 기능을 가진 객체 |
0. 드라이버 준비 C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib 폴더 내부에서 현 오라클 버전과 맞는 파일 준비, 복사 오라클 11g -> ojdbc6.jar 오라클 10g -> ojdbc5.jar JAR (Java Archive) : 자바로 만든 집합체 0-1. 자바프로젝트 위 1번의 jar파일추가 - 프로젝트명 선택 후 마우스 우버튼 클릭 > Build Path...선택 > Configure Build Path... 선택> Libraries탭 > Module ~~선택 후 오른쪽의 [Add Extanal JARs...]선택 > Apply and close 설치 |
개발툴인지
프레임워크인지
기술- JDBC
오라클은 1부터, 자바는 0부터 카운팅
결합도는 낮추고 응축도는 높이다.
java에서 auto commit;이 설정되어있다.
sql 년월일
ecl 시분초까지
1. 드라이버 설치 소스코드에 기술 - Class.forName('패키지경로포함.클래스명까지 기술') ; Class.forName("oracle.jdbc.driver.OracleDriver") ; C:\Users\hi\Desktop\ojdbc6\oracle\jdbc\driver\OracleDriver.class =>oracle.jdbc.driver.OracleDriver |
|
2.Connection객체 얻어오기( url, username, password) - username = "오라클의 사용자계정명" => "test 또는 TEST" - password = "1111" - url = 형식 : jdbc:데이터베이스종류:[오라클인경우는드라이버버전까지:]@호스트명:포트번호:전역데이터베이스명(SID) ; => "jdbc:oracle:thin:@localhost:1521:xe" => "jdbc:oracle:thin:@127.0.0.1:1521:xe" - Connection conn = DriverManager.getConnection(url, username, password) ; import.java.sql.*; String url = "jdbc:oracle:thin:@ localhost :1521:xe" ; String username = "TEST" ; String password = "1111" ; Connection conn = DriverManager.getConnection(url, username, password) ; Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "TEST", "1111") ; |
|
- Statement자료형 객체인 경우 | - PreparedStatement자료형 객체인 경우 |
Statement (정적쿼리) 1. 단일로 사용될 때 빠른 속도를 지닌다. 2. 쿼리에 인자를 부여x할 수 없다. 3. 매번 컴파일을 수행해야 한다. 4. 쿼리문에 값이 미리 입력되어 있어야 한다. |
PreparedStatement (동적쿼리) 1. 여러 번 수행될 때 빠른 속도를 지닌다. 2. 쿼리에 인자를 부여o할 수 있다. 3. 처음 프리컴파일 된 후, 이후에는 컴파일을 수행하지 않음. 4. 쿼리문에 값이 인자로 저장된다. |
Statement st = conn.createStatement(); | PreparedStatement ps = conn.prepareStatement("SQL명령문 문자열"); |
4. 명령문 실행 및 데이터 담기 | |
4-1. SELECT명령문 인 경우 (SELECT표구조, ResultSet로) | |
ResultSet rs = st.executeQuery(" SELECT 명령문 문자열") ; |
ResultSet rs = ps.executeQuery() ; - rs.next() -> 1줄씩만 담아오는 오라클cursor객체와 유사기능 - while(rs.next()){ 실행코드들...; } |
4-2. insert, delete, update인 경우(데이터 갱신이 발생됨)- 자동 commit; |
|
st.executeUpdate("명령문 문자열") ; int result = st.executeUpdate("명령문 문자열") ; |
ps.executeUpdate() ; int result = ps.executeUpdate() ; |
----바인드 변수가 존재하는 경우 ps.set자료형(바인드변수위치값, 바인드변수 넣을 값) ; ex) ps.setInt(1,10); ps.setString(2, "Tom"); |
|
5. ResultSet객체에서 데이터 가져오기 rs.next() 반드시 해줘야 함. rs.get자료형(컬럼위치의 값) ; => ex) rs.getInt(1) ; rs.get자료형("컬럼명") ; => ex) rs.getString("ename") |
|
6. 자원반납 (객체 닫기) rs.close (); // ResultSet st.close (); / ps.close(); // Statement conn.close(); // Connection |
|
ㄹㄹ
package jdbc; import java.sql.*; public class JdbcTest { public static void main(String[] args) { try { Class.forName("oracle.jdbc.driver.OracleDriver") ; String url = "jdbc:oracle:thin:@localhost:1521:xe" ; String username = "TEST" ; String password = "1111" ; Connection conn = DriverManager.getConnection(url, username, password) ; Statement st = conn.createStatement(); //명령문을 담을 객체 생성 ResultSet rs = st.executeQuery( "select EMPNO eno, ENAME enm, DEPTNO dno from emp where deptno = 10"); //결과에 맞는 값만 떼올 수 있다. //별칭 지정시 대소문자 구분 없음 while(rs.next()) { // int rs1 = rs.getInt(1); int rs1 = rs.getInt("eno"); // String rs2 = rs.getString(2); String rs2 = rs.getString("ENM"); int rs3 = rs.getInt("dno"); System.out.println(rs1 + ", " + rs2 + ", " + rs3); } rs.close(); st.close(); //st.executeUpdate("DML문"); System.out.println("데이터베이스 연결 성공"); conn.close(); } catch (ClassNotFoundException e) { System.out.println("오라클 드라이버가 잘못되었습니다."); e.printStackTrace(); } catch (SQLException e) { System.out.println("데이터베이스 연결실패"); e.printStackTrace(); } } }
7782, CLARK, 10
7839, KING, 10
7934, MILLER, 10
데이터베이스 연결 성공
package dbc1;
public class User {
private String url = "jdbc:oracle:thin:@localhost:1521:xe";
private String user = "test";
private String pwd = "1111";
public String getUrl() {
return url;
}
public String getUser() {
return user;
}
public String getPwd() {
return pwd;
}
}
DAO(Data Access Object) | : DB에 접근하기 위한 SQL명령문을 담고있는 객체 |
DTO(Data Transfer Object) | : 데이터를 전송하는 객체 =Value Object : 데이터를 저장하는 객체 |
728x90
반응형
'[JDBC]' 카테고리의 다른 글
[JDBC] TRANJACTION - COMMIT, ROLLBACK, 원자성 (0) | 2024.02.01 |
---|---|
[JDBC] ex) [회원정보테이블] (0) | 2024.01.31 |
[JDBC] DAO, DTO (0) | 2024.01.31 |
[JDBC] Ex (0) | 2024.01.31 |
[JDBC] Statement, PreparedStatement (0) | 2024.01.30 |