일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 엑셀
- spring 오류
- Excel
- 한글 깨짐
- CSS
- eclipse 설정
- JavaScript
- JSP
- 이클립스 설정
- HTML
- 자바 리스트
- Java
- docker
- 엘라스틱서치
- 자바스크립트
- 데이터베이스
- 쿼리
- java 오류
- jQuery
- tomcat
- 이클립스
- 자바
- db
- Eclipse
- elasticsearch
- 도커
- spring form
- 인텔리제이
- 에러
- 형변환
Archives
- Today
- Total
개발노트
JDBC 드라이버 로딩 및 Connection 생성 본문
반응형
2022.01.20 - [Eclipse] - jar 파일 추가하기 (oracle 18c 기준)
JDBC 관련 클래스 (java.sql 패키지) |
|
DriverManager | JVM에서 JDBC전체를 관리하는 클래스 Driver등록, Connection 연결작업 등 |
Driver | DB를 만드는 Vendor(Oracle, MS-SQL, MYSQL등)을 implements하여 DB를 연결할 수 있는 class를 만드는 인터페이스 |
Connection | DB와 연결성을 갖는 인터페이스 |
Statement | SQL문을 실행하는 인터페이스 |
ResultSet | 조회된 결과 데이터를 갖는 인터페이스 |
1. JDBC 드라이버 등록 확인
( * 아래 작업을 수행하기 전에 jar파일을 등록 )
1) MySQL의 JDBC Driver Class를 로딩
2) Class.forName(“driver”)을 이용해서 Driver Class를 로딩하면 객체가 생성되고, DriverManager에 등록
ex) Class.forName(“com.mysql.jdbc.Driver”)
- Driver 클래스를 찾지 못할 경우, ClassNotFoundException 예외가 발생
public DriverTest() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("드라이버 등록 성공");
} catch (ClassNotFoundException e) {
System.out.println("드라이버 등록 실패");
e.printStackTrace();
}
}
2. Connection (DB 연결)
Connection : 데이터베이스와 연결하는 객체
1) DriverManager.getConnection(연결 문자열, DB_ID, DB_PW)으로 Connection 객체를 생성
2) 연결문자열(Connection String) - “jdbc:Driver 종류://IP:포트번호/DB명”
ex) jdbc:mysql://localhost:3306/test_db
* ID : DB 아이디
* PW : DB 비밀번호
public Connection getConnection() {
Connection conn = null; // 오라클 DB서버와의 접속을 관리하는 클래스
String url = "jdbc:Driver 종류://IP:포트번호/DB명";
String userId = "DB 아이디";
String password = "DB 비밀번호";
try {
// DriverManager.getConnection() : OracleDriver 클래스를 이용해서 Oracle DB에 접속을 시도함
conn = DriverManager.getConnection(url, userId, password);
System.out.println("접속 성공");
} catch (SQLException e) {
System.out.println("접속 실패");
e.printStackTrace();
}
return conn;
}
3. SQL 작업 수행
public int deleteMethod() {
// DB
Connection conn = getConnection();
String sql = "delete from 테이블명 where name = ?";
int result = 0;
// 보조 스트림 클래스 : Connection 대신 DB와 요청/응답
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
result = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (pstmt != null){
pstmt.close(); // 접속 해제
}
if (conn != null){
conn.close(); // 접속 해제
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
}
public List<Vo> selectMethod() {
Connection conn = getConnection();
String sql = "select * from 테이블명";
List<Vo> list = new ArrayList<Vo>();
// db에 요청/응답 처리 클래스
PreparedStatement pstmt = null;
// pstmt가 응답 데이터를 처리하고, 그 결과를 ResultSet 객체에 저장하고 리턴함
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
// rs.next() : 데이터가 있는지 확인하고 1행의 데이터를 읽어와서
// true : 데이터 있는 경우, false : 데이터 없는 경우
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
double height = rs.getDouble("height");
String logtime = rs.getString("logtime");
Dto vo = new Dto(name, age, height, logtime);
list.add(vo);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
반응형
'Programming > Database' 카테고리의 다른 글
[MySQL] SQL 모드 (sql_mode)와 클라이언트별 설정 방법 (0) | 2024.05.31 |
---|---|
테이블 및 컬럼 찾기 (0) | 2023.01.08 |
SQL 함수 (0) | 2020.04.27 |
UNION / INTERSECT / MINUS (0) | 2020.04.27 |
NVL 함수 (0) | 2020.04.27 |