seong
자바를 오라클 DB에 연동하기 본문
DB 연동 하는 라이브러리가 필요한 이유
프로토콜을 지켜서 통신을 해야하지만, 내가 직접 만들면 프로토콜을 지키기가 어렵다.
그래서 사용한다 자바는 대표적으로 JDBC가 있다.
1. DBMS를 다운 했다면 이미 있다. ojdbc8.jar를 lib로 넣어주자.
2. Build Path -> Java Build Path -> Libraries -> Classpath -> Add JARs -> 라이브러리 선택 -> Apply
3. DB연동을 시켜줄 메소드를 작성. 추후 타입은 void가 아닌 Connection 타입으로 변경해줄 것 이다.
DB 연결시 실패 하면 오류를 확인 하기 위해 try 문 안에 작성해준다.
오라클을 사용중 이기 때문에 오라클 드라이버의 경로를 넣어준다.
4. 작업관리자로 리스너가 작동하는지 확인
클라이언트(사용자)가 DBMS와 접근 위해서는 Listener(port는 1521이다.)를 이용해 접근 할 수 있다.
만약 Listener가 꺼져있다면 제대로된 통신이 일어나지 않는다.
try catch() 활용해 오류 확인하기 (실무에서 매우 중요!)
try문이 실패 하면 catch문을 실행한다.
확인을 위해 비밀번호 하나를 지우고 실행해 보았다. e.printStackTrace메소드로 내가 무엇이 틀렸는지 오류코드를 알려준다.
4. DB 출력 해보기
- DB 연결(메서드 실행)
- 문장 완성(PreparedStatement)
- 문장 전송(ResultSet)
- 출력
소스코드의 역할
connection메소드를 실행 시켜 DB를 연결해준다.
PreparedStatement는 SQL 구문을 실행해주는 역할을 한다. 자바 스스로는 SQL문을 해석할 수 없기 때문이다.
ResultSet는 executeQuery를 통해 SQL 쿼리문의 결과 값을 Result값으로 반환해 전달해주는 역할을 한다.
전달 받은 값들을 rs라는 변수에 담아서 출력문으로 하면 끝이 난다.
여기서 주의할점은 DB를 작성할 때 try,catch문으로 오류코드를 항상 반환해 주어야 한다.
package db;
// ctrl + shift + o : import문 자동 완성
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DBEx02 {
static Connection connection() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe",
"SCOTT", // 아이디
"TIGER"// 비밀번호
);
return conn;
}
catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
try{
//1. DB 연결
Connection conn = connection();
//2. 문장 완성
PreparedStatement pstmt =
conn.prepareStatement("SELECT empno, ename FROM emp");
//3. 문장 전송
ResultSet rs = pstmt.executeQuery();
//4. 커서 내리기
while(rs.next()) {
System.out.println(rs.getInt("empno") + " " + rs.getString("ename"));
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
'데이터베이스 > JDBC' 카테고리의 다른 글
JDBC 설계 및 만드는 순서 (0) | 2022.08.18 |
---|---|
JDBC AppService 만들기(SCOTT) (0) | 2022.08.17 |
JDBC INSERT (SCOTT) (0) | 2022.08.16 |
JDBC 데이터 SELECT(reading) 실습 (0) | 2022.08.16 |