-저 두 서비스가 실행 중이어야 오라클 서비스가 실행되고 있는 것.
<JDBC : Java Database Connectivity 연동방법>
1. Driver class load & register (DriverManager)-> 클래스 로드를 하면 DriverManager를 통해 자동으로 등록됨.
2. get Connection (url, user, pwd)
3. create Statement
4. execute (sql)
5. result( , int, recordset)
6. get data
7. close (5, 3, 2 순으로 닫음.)
<연동 예제 코드>
더보기
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
/**
* JDBC : Java Database Connectivity 연결방법
* 1. Driver class load & register (DriverManager)
* 2. get Connection (url, user, pwd)
* 3. create Statement
* 4. execute (sql)
* 5. result( , int, recordset)
* 6. get data
* 7. close (5, 3, 2)
* @author user
*
*/
public class TestJDBC {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//JDBC : Java Database Connectivity
// 1. Driver class load & register (DriverManager) -> DriverManager를 통해 자동으로 등록됨.
Class.forName("oracle.jdbc.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "hr";
String password = "hr";
// 2. get Connection (url, user, pwd)
Connection conn = DriverManager.getConnection(url, user, password);
// 3. create Statement
Statement stmt = conn.createStatement();
String sql = "select * from employees";
// 4. execute (sql)
ResultSet result = stmt.executeQuery(sql);
// 5. result( , int, recordset)
ResultSetMetaData meta = result.getMetaData(); //전체 컬럼 값을 접근해서 모든 데이터를 출력 (for문)
//result.getMetaData() :: ResultSetMetaData
// 6. get data
String resultStr = "";
while (result.next()) {
resultStr += result.getString(3) + "\n";
}
System.out.println(resultStr);
// 7. close (5, 3, 2) 종료하지 않으면 좀비 프로세스가 되어버림.
result.close(); // 5번
stmt.close(); // 3번
conn.close(); // 2번
}
}
1. JDBC 드라이버 로딩 및 등록
- DriverManager를 통해 register 등록은 자동으로 설정됨.
- database마다 url은 모두 다름. 각 DB회사 홈페이지에서 찾으면 됨.
- jdbc:oracle:thin: -> 프로토콜 (jdbc 규약 + 오라클 규약 + thin 방식) *오라클만 3단계 다른 서비스는 2단계
thin = 인코딩 타입 4개 / oci = 인코딩 타입 7개 - url => 호스트정보 + 포트정보 + 서비스명 ("@localhost:1521:xe")
2. 데이터베이스 연결 생성
- Connection 객체를 생성
String url = "jdbc:oracle:thin:@localhost:1521:xe"; // database마다 url은 모두 다르다. 각 DB회사 홈페이지에서 찾으면 됨.
String user = "hr";
String password = "hr";
Connection conn = DriverManager.getConnection(url, user, password);
-연결 정보를 담은 Connection 객체를 생성함.
-트랜잭션 관리는 connection에서 함. (commit, rollback 명령이 있음)
-conn.getMetaData() :: DatabaseMetaData-> admin 계정만 접근가능 (DBA 권한이 필요.)
3. Statement 생성
Statement stmt = conn.createStatement();
- db session은 statement과 resultSet이 한 묶음으로 작동. -> (1:1 관계 = 여러 개의 resultSet을 가질 수 없음.)
- statement : 3종류 (Statement, PreparedStatement(중요), CallableStatement)
4. SQL문 실행
String sql = "select * from employees";
ResultSet result = stmt.executeQuery(sql);
- execute 종류: execute(anySql-CallableSql), executeUpdate(otherSql), executeQuery(selectSql)
5. 결과 처리
ResultSetMetaData meta = result.getMetaData(); //전체 컬럼 값을 접근해서 모든 데이터를 출력 (for문)
String resultStr = "";
while (result.next()) {
resultStr += result.getString(3) + "\n";
}
System.out.println(resultStr);
- ResultSet 객체를 통해 데이터베이스의 결과를 처리함.
- result.next()를 하는 이유 : sql문의 첫번째 가리키는 부분은 컬럼명이 담긴 부분이기 때문에 next()메서드를 한번 써야 첫번째 레코드로 넘어가서 값이 제대로 출력되기 때문
6. 연결종료
result.close(); // ResultSet
stmt.close(); // Statement
conn.close(); // Connection
- 종료하지 않으면 좀비 프로세스가 되어버림.
'새싹과정 정리' 카테고리의 다른 글
Connection Pool을 활용하여 Connection 관리 (0) | 2023.08.29 |
---|---|
Web Project (0) | 2023.08.29 |
새싹과정 6주차(1) (0) | 2023.08.23 |
자바 기초 - 새싹과정 5주차 (4) (0) | 2023.08.22 |
자바 기초 - 새싹과정 5주차 (3) (0) | 2023.08.18 |