본문 바로가기

코딩

JDBC를 이용한 데이터베이스 연결방법

JDBC(Java DataBase Connectivity)

쿼리를 수행할 있도록 제공하는 API 의미함

 

JDBC 이용한 데이터베이스 연결방법

 

1단계 : import java.sql.*;

 

2단계 : 특정 Driver 검색

mssql, mysql, ms-access, oracle

Class.forName("검색 드라이브명");

mysql : com.mysql.jdbc.Driver

oracle : oracle.jdbc.driver.OracleDriver

 

3단계 : DataBase 연결

 

Connection conn = DriverManager.getConnection(url, id, password);

URL 프로토콜 sub 프로토콜 : 파일명

 

ms-acess --> jdbc:odbc:OdbcFileName

mysql --> jdbc:mysql://localhost:3306/DB

mssql --> sqlserver://localhost:1443:DB=Name:integratedSecurity=true;

oracle --> jdbc:oracle:thin;@localhost:1521:시드->(디비명:orcl)

 

 

4단계 : 쿼리문 작성

 

--Statement Class(정적)

- Statement stmt = conn.createStatement();

 

PreparedStatement(동적)

- PreparedStatement pstmt = conn.prepareStatement(query);

 

 

5단계 : 결과저장

 

ResultSet rs = stmt.executeQuery(query);  //select

ResultSet rs = stmt.executeUpdate(query); //insert, update, delete

 

ResultSet rs = pstmt.executeQuery(query);  //select

ResultSet rs = pstmt.executeUpdate(query); //insert, update, delete

 

 

6단계 : 사용후 반드시 close() 한다.

여기까지가 JDBC를 이용한 DB 연결방법이다. 아래는 안봐도 된다.

 

 

 

 

 

 

 

 

-----------------------테이블 작성-----------------------

 테이블  : department

 

 학과번호(deptno) : 숫자(3) not null     //3자리조건은 not null

 학과명(dname) : 문자(30) not null

 단과대(college) : 숫자(3) not null

 호관(loc) : 문자(10) not null

 제약조건 추가 라벨을 이용해서 기본키(학과번호)

-----------------------------------------------------------

 

 

DriverManager Connection

DriverManager 클래스는 static 메소드인 getConnection()메소드를 이용해서

데이터베이스와 연결된 Connection 객체를 반환함.

 

- getConnection(String url, String user, String password);

 url : "jdbc:oracle:thin:@localhost:1521:orcl"

 user : "scott" : 오라클 사용자 계정명

 password : "tiger" : 사용자 비밀번호

 

 

Connection 객체는 데이터베이스와의 연결을 담당하는 객체다.

Connection 객체를 이용해서 SQL 전송할 있는 Statement 객체를 얻을 있음.

 

Connection 주요 메소드

- close(), commit(), createStatement(), prepareStatement(String sql), executeQuery(String sql),

 rollback(), setSavepoint(String name), setAutoCommit(boolean value)

 

 

Statement

- SQL 데이터베이스로 전송하고 실행 결과를 반환함

 

-Statement 주요메소드

- close(),

boolean execute(String sql) : SQL문을 수행하고 수행결과가 ResultSet 객체인 경우

True 반환, 갱신된 숫자가 반환되면 false 반환

 

resultSet execute(String sql) : SQL문이 select 경우 사용함.

 

int executeUpdate(String sql) : SQL문이 insert, delete, update, create, drop 경우 사용

getResultSet() : ResultSet 객체를 반환할 경우 사용

 

 

 

ResultSet

- select 쿼리의 수행결과로 얻어진 결과 집합을 추상화 한것임.

- ResultSet은 결과 집합에서 데이터를 가져올 수 있는 다양한 메소드와 커서를 포함하고 있음.

 

ResultSet의 주요 메소드

 

반환형이 boolean인 메소드 : first(), last(), next(), privious()

반환형이 void close() : ResultSet 객체를 해제

반환형이 int인 메소드 : getInt(int 행에서 컬럼위치)

            getInt(String 컬럼이름) 컬럼이름 위치에 해당 int값을 반환함(몇번째인지)

반환형이 String인 메소드 : getString(int 컬럼위치에 해당하는 스트링 값을 반환함)

           getString(String 컬럼이름)에 해당하는 String값 반환

 

 

 

PreparedStatement는 SQL의 형태는 동일하나 조건이나 변수값이다른 문장을 바인딩변수를 사용해서

변수를 처리함으로써 항상 동일한 SQL문을 처리하게 할수있다.

 

PreparedStatement 객체의 생성 및 바인딩 변수 사용법

- 바인딩 변수는 실제 값으로 대체될 부분에 해당한다.

String sql = "insert into department values(?, ?, ?, ?)";    //여기서 department는 따로 테이블 만든거

PreparedStatement pstmt = conn.preparedStatement(sql);

 

- 바인딩 변수의 개수만큼 순서대로 해당변수와 대체될 값을 지정해주면 됨

pstmt.setInt(1,203);

pstmt.setString(2, "컴퓨터공학과");

pstmt.setInt(3,200);

pstmt.setString(4,"7호관");

 

-- 바인딩변수는 컬럼명에는 절대 사용불가

 

PreparedStatement는 PreparedStatement의 바인딩 변수에 값을 지정해주는 setXXX()메소드가 제공됨