JDBC
keyword
- JDBC
- DriverManger
- Connection
- Statement
- ResultSet
JSBC(Java Database Connectivity)
-
자바 이용한 데이터베이스 접속과 SQL 문장의 실행, 실행결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약
-
자바 프로그램내에서 SQL문을 실행하기 위한 자바 API
-
SQL과 프로그래밍 언어의 통합 접근 중 한 형태
JAVA는 표준 인터페이스인 JDBC API를 제공합니다.
데이터베이스 벤더, 써드파티에서는 JDBC 인터페이스를 구현한 드라이버(driver)를 사용합니다.
환경구성
-
JDK
-
JDBC 드라이버 설치
Maven에 의존성 추가, MySQL 사이트에서 다운로드
pom.xml
<dependency> <groudId>mysql</groudId> <artifactId>mysql-connect-java</artifactId> <version>5.1.45</version> </dependency>
JDBC 사용
1) import java.sql.*;
2) 드라이버 load
Class.forName("com.mysql.jdbc.Driver");
3) Connection 객체 생성 (클라이언트가 DB 접속)
String dburl = "jdbc:mysql://localhost/dbName";
Connection con = DriverManger.getConnection(dburl, ID, PWD);
4) Statement 객체 생성 및 질의 수행 (Query문 생성 및 실행)
Statement stmt = con.createStatemnet();
ResultSet rs = stmt.executeQuery("select no from user");
질의 수행
stmt.execute("query"); ← any SQL
stmt.executeQuery("query"); ← SELECT
stmt.execcuteUpdate("query"); ← INSERT, UPDATE, DELETE
5) SQL문에 결과물이 있다면 ResultSet 객체를 생성 (SELECT는 표반환, INSERT, DELTETE 등은 확인 반환)
ResultSet로 결과 받기, DB안에서 결과를 rs 포인터가 가리키도록 합니다.
ResultSet rs = stmt.executeQuery("select no from user");
while (rs.next())
System.out.println(rs.getInt("no"));
6) 모든 객체를 닫음 (접속 끊음, DB는 접속가능한 클라이언트 수가 제한되어있음)
rs.close();
stmt.close();
con.close();
JDBC 클래스의 생성관계
DriverManger를 통해 Connection 인스턴스를 얻습니다.
Connection 통해 Statement 얻습니다.
Statement 통해 ResultSet을 얻습니다.
소스코드 예제
public List<GuestBookVO> getGuestBookList(){
List<GuestBookVO> list = new ArrayList<>();
GuestBookVO vo = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
conn = DBUtil.getConnection();
String sql = "select * from guestbook";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
vo = new GuestBookVO();
vo.setNo(rs.getInt(1));
vo.setId(rs.getString(2));
vo.setTitle(rs.getString(3));
vo.setConetnt(rs.getString(4));
vo.setRegDate(rs.getString(5));
list.add(vo);
}
}catch(Exception e){
e.printStackTrace();
}finally {
DBUtil.close(conn, ps, rs);
}
return list;
}
public static void close(Connection conn, PreparedStatement ps){
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {e.printStackTrace(); }
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {e.printStackTrace();}
}
}
실습
입력/수정/조회/삭제
File > New > Maven project > next 버튼 > quickstart (기본설정) >
artifactId : jdbcexam > finish 버튼
그림과 같이 java 클래스를 생성합니다.
[소스보기]
https://github.com/Wordbe/TIL/tree/master/Web/5.%20DB%20%EC%97%B0%EA%B2%B0%20%EC%9B%B9/jdbc
JDBCExam1.java
RoleDao.java
Role.java
pom.xml
Reference
'Infra > Database' 카테고리의 다른 글
한글 검색기 만들기 (0) | 2021.08.16 |
---|---|
[springboot] mysql database - java (JPA) 연동 (4) | 2020.10.03 |
MariaDB 다운로드, 계정 설정 (261) | 2020.07.31 |
[Boostcourse] SQL, MySQL (622) | 2019.11.21 |
댓글