import java.sql.*;
// Class 클래스의 forName 메서드가 com.mysql.jdbc.Driver 객체를 메모리에 올린다.
Class.forName("com.mysql.jdbc.Driver"); // 객체 이름은 DB 벤더마다 다름
String dburl = "jdbc:mysql://localhost/dbName"; // dburl 이름은 DB 벤더마다 다름
// DriverManager를 이용해서 Connection 인스턴스를 얻는다.
Connection con = DriverManager.getConnection(dburl, ID, PWD);
// 소스코드 예제
public static Connection getConnection() throws Exception{
String url = "jdbc:oracle:thin:@117.16.46.111:1521:xe"; // oracle
String user = "smu";
String password = "smu";
Connection conn = null;
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, user, password);
return conn;
}
// con(Connection)을 통해서 Statement를 얻는다.
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select no from user");
// 참고
stmt.execute("query"); // any SQL
stmt.executeQuery("query"); // select
stmt.executeUpdate("query"); // insert, update, delete
// DB로부터 한 건씩 결과 값을 읽어온다.
while(rs.next())
System.out.println(rs.getInt("no"));
rs.close();
stmt.close();
con.close();
앞으로 Spring JDBC를 배우기 앞서 JDBC의 원리에 대해 배웠다. 만약 Spring과 같은 framework이 없다면 다음과 같은 JDBC 코드를 직접 작성해야 할 것이다.
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();}
}
}