09009
[Java] JDBC (2) (eclipse와 Oracle, MySQL) 본문
일단, Java와 DB를 연동하는 순서를 간략하게 먼저 요약하자면 아래와 같다.
1) 드라이버 load
forName(): java.lang.Class 클래스의 static 메소드이다.
패키지명을 작성한 후 클래스 이름을 문자열 형태로 지정하면 이를 JVM에 안으로 읽어 들이도록 한다.
Class.forName(“driver”)을 이용해서 Driver Class를 로딩하면 객체가 생성되고, DriverManager에 등록된다.
Class.forName(“driver명”)
2) Connection 클래스를 이용한 DB 연결
Connection 클래스: DB를 연결하여 작업을 수행할 수 있도록 만들어 주는 클래스
DriverManager 클래스의 static 메소드인 getConnection()을 호출해야 한다
DriverManager 클래스는 JDBC 드라이버를 통헤 Connection을 만드는 역할을 수행한다.
Connection conn = DriverManager.getConnection(url, userId, password)
3) Statement 클래스를 이용한 SQL을 실행할 객체를 생성
이전 단계에서 생성한 Connection 클래스 (conn) 로 접근하여 createStatement() 메소드를 호출하여 생성한다.
Statement stmt = conn.createStatement()
4) SQL 실행
• 조회 : rs에는 조회된 데이터 값이 저장된다.
ResultSet rs = stmt.executeQuery(sql)
• 조회된 데이터가 1건일 경우
if (rs.next()) {
// 읽은 데이터 처리
...
rs.getString(...) // 괄호 안 속에 들어가는 순서나 컬럼명 가능
rs.getInt(...)
rs.getDate(...)
...
} else
// else문에 없는 데이터라는 정보를 알려주는 문구를 출력
• 조회된 데이터가 여러 건일 경우
while(rs.next()) {
// 읽은 데이터 처리
...
}
• 입력 / 수정 / 삭제 : result에는 성공한 개수 반환
int result = stmt.executeUpdate(sql)
if (result > 0) {
// 성공
}
else // 실패
5) DB 연결 해제
rs.close();
stmt.close();
conn.close();
Oracle과 Java 연결
package ch17;
import java.sql.*;
public class OraConn {
public static void main(String[] args) {
String driver = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; // oracle 정식버전 xe -> orcl
try {
Class.forName(driver); // 1) 드라이버 load
Connection conn = DriverManager.getConnection(url, "c##scott", "tiger"); // 2) connection 클래스를 이용한 DB연결
System.out.println("연결에 성공하였습니다.");
conn.close(); //3) DB연결 해제
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
에러가 발생할 경우를 대비하여 try - catch문으로 예외처리를 해준다.
필자의 경우 Oracle 21 버전이므로 useid는 'c##scott'으로 작성해야 컴파일 에러가 발생하지 않는다.
MYSQL과 Java 연결
package ch17;
import java.sql.*;
public class MyConn {
public static void main(String[] args) {
String driver = "com.mysql.cj.jdbc.Driver";
// ip번호 port명 DB명
String url = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
try {
Class.forName(driver); // 1) 드라이버 load
Connection conn = DriverManager.getConnection(url, "root", "mysql"); // 2) connection 클래스를 이용한 DB연결
System.out.println("연결에 성공하였습니다.");
conn.close(); // 3) DB연결 해제
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
}
위의 소스코드에 작성한 port명은 아래 스크린샷에 보이는 것과 같이 작성한 것이고, port명 바로 옆에 작성된 test는
MYSQL과 Java를 연동할 DB명을 작성한 것이다.
'Back-End > JAVA' 카테고리의 다른 글
[Java] length, length(), size() (0) | 2023.04.05 |
---|---|
[Java] JDBC (3) - 조회 / 입력 / 수정 / 삭제 (0) | 2023.03.26 |
[Java] JDBC (1) (eclipse와 Oracle, MySQL) (0) | 2023.03.23 |
[Java] 접근 제어자 (0) | 2023.03.19 |
[Java] 클래스변수, 인스턴스변수, 초기화 블럭 (0) | 2023.03.18 |