// ver1 4, 5번이 아래 ver2와 다름
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTest2 {
public static void main(String[] args) {
//1. JDBC드라이버설치(오라클DB에서 제공하는 자바 개발자를 위한 압축 라이브러리 파일)
//2. 드라이버클래스들 JVM에 로드
try {
Class.forName("oracle.jdbc.OracleDriver");
System.out.println("JDBC드라이버 로드성공");
} catch (ClassNotFoundException e) {
e.printStackTrace();
return;
}
//3. DB와 연결
Connection conn = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe"; //보통 OCI와 thin중 thin씀, @+접속할 ip
String user = "hr";
String password = "hr";
try {
conn = DriverManager.getConnection(url, user, password);
System.out.println("DB와 연결 성공");
} catch (SQLException e) {
e.printStackTrace();
return;
}
//4. SQL문 DB에 송신하기
Statement stmt = null;
// 5. SQL문 결과 수신하기
ResultSet rs = null;
try {
stmt = conn.createStatement();
int dId = 60; // 부서번호
String fn = "D";
String selectSQL = "SELECT employee_id, first_name, hire_date, salary\r\n"
+ "FROM employees\r\n"
+ "WHERE department_id=" + dId + "AND SUBSTR(first_name, 1, 1) = '" + fn + "'";
// " " 자바변수 선언 + + 는 연결
// ' ' SQL 문법
// \r\n 줄바꿈 이대로 써도됨
// 먼저 SQL developer를 통해서 오타 있는지 없는지 확인하는 작업부터 할 것
// department_id=60;"; 안에 ;은 필요없음
rs = stmt.executeQuery(selectSQL); //rs : 결과집합수신 //송신(stmt.executeQuery(selectSQL))
while(rs.next()) { // while(rs.next() == true) ) {
int eId = rs.getInt("employee_id"); // 컬럼의 자료형이 숫자 자료형이다.
String eName = rs.getString(2); // rs.getString("first_name"); // 컬럼의 자료형이 글자 자료형이다.
Date eHdt = rs.getDate("hire_date"); // 컬럼의 자료형이 날짜 자료형이다.
// sql의 date 타입
int eSal = rs.getInt("salary");
System.out.println(eId + ":" + eName + ":" + eHdt + ":" + eSal );
}
} catch (SQLException e) {
e.printStackTrace();
} finally { //연결했으면 무조건 끊어야함. 각각 close 필요
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
}
}
if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
}
}
}
}
}
// ver2
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTest2 {
public static void main(String[] args) {
//1. JDBC드라이버설치(오라클DB에서 제공하는 자바 개발자를 위한 압축 라이브러리 파일)
//2. 드라이버클래스들 JVM에 로드
try {
Class.forName("oracle.jdbc.OracleDriver");
System.out.println("JDBC드라이버 로드성공");
} catch (ClassNotFoundException e) {
e.printStackTrace();
return;
}
//3. DB와 연결
Connection conn = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe"; //보통 OCI와 thin중 thin씀, @+접속할 ip
String user = "hr";
String password = "hr";
try {
conn = DriverManager.getConnection(url, user, password);
System.out.println("DB와 연결 성공");
} catch (SQLException e) {
e.printStackTrace();
return;
}
//4. SQL문 DB에 송신하기
PreparedStatement pstmt = null;
//준비된 구문, 이걸로 보내는걸 더 권장
// 5. SQL문 결과 수신하기
ResultSet rs = null;
String selectSQL = "SELECT employee_id, first_name, hire_date, salary\r\n"
+ "FROM employees\r\n"
+ "WHERE department_id=?\r\n" // ?은 바인드변수. 값의 위치에만 와야함. 값이 아닌 위치인 테이블위치나 컬럼명 등 불가능
// ORDER BY first_name ? 이렇게 못옴.
+ "AND SUBSTR(first_name, 1, 1) = ?";
try { // SQL 구문 오라클 엔진에게 보내서 기억시킴
pstmt = conn.prepareStatement(selectSQL); // 송신
pstmt.setInt(1, 60); // 첫번째 물음표 1을 60 정수로 대입, sql은 인덱스가 1부터 시작임
pstmt.setString(2, "D"); // 두번째 물음표 2는 "D" 문자로 대입
rs = pstmt.executeQuery(); // ?값만 송신, 안에 인자/매개변수 필요없음
//executeQuery = select문 // executeUpdate 도 있
while(rs.next()) { // while(rs.next() == true) ) {
int eId = rs.getInt("employee_id");
String eName = rs.getString(2);
Date eHdt = rs.getDate("hire_date");
int eSal = rs.getInt("salary");
System.out.println(eId + ":" + eName + ":" + eHdt + ":" + eSal );
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
}
}
if(pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
}
}
}
}
}
'데이터베이스 > Oracle' 카테고리의 다른 글
로컬로 test하기 위한 밑작업(dmp파일, 익스포트 마법사) (0) | 2023.08.23 |
---|---|
JDBC 드라이버 설치하기 (0) | 2023.08.23 |
Sequence 객체와 트랜잭션 (0) | 2023.08.23 |
exerd 플러그인 활용하기 (0) | 2023.08.23 |
정규화 예제 (0) | 2023.08.23 |