들어가기 전에
이번 시간엔 JAVA언어를 이용해서 DBMS로 부터 정보를 조회하는 방법인 JDBC에 대해 알아보도록 하겠습니다.
학습 목표
- JDBC가 무엇인지 이해한다.
핵심 개념
- JDBC
- DriverManager
- Connection
- Statement
- ResultSet
학습하기
들어가기 전에
이번 시간엔 JAVA언어를 이용해서 DBMS로 부터 정보를 조회하는 방법인 JDBC에 대해 알아보도록 하겠습니다.
학습 목표
핵심 개념
학습하기
JDBC 개요
JDBC 환경 구성
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
JDBC를 이용한 프로그래밍 방법
JDBC 클래스의 생성 관계
JDBC 사용 - 단계별 설명
1. IMPORT
import java.sql.*;
2. 드라이버 로드
Class.forName( "com.mysql.jdbc.Driver" );
3. Connection 얻기
String dburl = "jdbc:mysql://localhost/dbName";
Connection con = DriverManager.getConnection ( dburl, ID, PWD );
소스코드 예제
public static Connection getConnection() throws Exception{
String url = "jdbc:oracle:thin:@117.16.46.111:1521:xe";
String user = "smu";
String password = "smu";
Connection conn = null;
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, user, password);
return conn;
}
4. Statement 생성
Statement stmt = con.createStatement();
5. 질의 수행
ResultSet rs = stmt.executeQuery("select no from user" );
참고
stmt.execute(“query”); //any SQL
stmt.executeQuery(“query”); //SELECT
stmt.executeUpdate(“query”); //INSERT, UPDATE, DELETE
6. ResultSet으로 결과 받기
ResultSet rs = stmt.executeQuery( "select no from user" );
while ( rs.next() )
System.out.println( rs.getInt( "no") );
7. Close
rs.close();
stmt.close();
con.close();
소스코드 예제
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 int addGuestBook(GuestBookVO vo){
int result = 0;
Connection conn = null;
PreparedStatement ps = null;
try{
conn = DBUtil.getConnection();
String sql = "insert into guestbook values("
+ "guestbook_seq.nextval,?,?,?,sysdate)";
ps = conn.prepareStatement(sql);
ps.setString(1, vo.getId());
ps.setString(2, vo.getTitle());
ps.setString(3, vo.getConetnt());
result = ps.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally {
DBUtil.close(conn, ps);
}
return result;
}
소스코드 예제
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();}
}
}
생각해보기
java.sql패키지를 보면 대부분이 interface로 되어 있는 것을 알 수 있습니다.
이를 실제로 구현하는 것은 DBMS를 만든 회사입니다.
java.sql외에 JAVA가 인터페이스만 대부분 제공하는 패키지는 또 어떤 것이 있을까요?
참고로 XML문서의 표준은 w3c에서 정합니다.
참고 자료
https://docs.oracle.com
https://docs.oracle.com
comment
24.04.05.
220304
어려운데 다들 이해하고 댓글 다는건지 그냥 다는건지 모르겠다
감사함다
210718
JDBC는 실용적이지만 코드는 역겨워!
2020. 05. 14 기준 mysql 최신버전으로 설치하면 jdbc 버전이 8.0.20입니다. 이걸 사용하시던지, 강의에 적혀있는 버전을 사용하시려면 mysql installer를 이용해 쉽게 추가 설치가 가능합니다.
stmt.excute.Query("select no from user" )에서 안의 값들은 임의의 query인가요 ?
감사합니다 ^^
감사합니다.
실습 파라서 이론만 봐서는 아직 잘 모르겟네욤 ㅠㅜ
감사합니다~!
좋은 강의 감사합니다. 14분 50초쯤에 영상이 반짝거립니다.