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()메소드가 제공됨
'코딩' 카테고리의 다른 글
톰캣 CATALINA_HOME, path설정 그리고 서버 startup (0) | 2021.01.11 |
---|---|
java 환경변수 설정 에러날때 (0) | 2021.01.11 |
웹의 입력양식, <form> 태그 (0) | 2020.12.29 |
사원관리 프로그램 (소 프로젝트) (0) | 2020.12.23 |
DB 트랜잭션 Transaction (0) | 2020.12.23 |