단점은 내가 필요한 부분을 쿼리문 만들어서 쿼리 날리고 질의응답하는 것이 필요함. (3번 과정) -> 코드의 중복이 생김!
그래서, 다음 게시물에서는 JDBC템플릿을 만들 것임. 이 게시물은 그 전 과정.
단계: 드라이버 로딩 - DB 연결 - SQL 작성 및 전송(데이터베이스에 데이터가 삭제 수정 삽입 등의 작업) - 자원해제
Class.forName(driver); 드라이버 로딩
만약 오라클을 쓴다면
private String driver = "oracle.jdbc.driver.OracleDriver";
private String url = "jdbc:oracle:thin:@localhost:~";
(실무에서는 여기에 IP 주소 넣으면 됨)
private String userid = "~";
private String userpw = "~";
하면 오라클을 메모리에 로딩한 것!
그 다음은 연결 객체 가져오기! conn (connection)이 브릿지 역할
conn = DriverManager.getConnection(url, userid, userpw);
드라이버로부터 연결 객체 가져오는 코드
실제로 쿼리 날릴 거!
String sql = "INSERTT INTO member (memId, memPW, memMail) values (?, ?, ?)";
pstmt.setString(1, member.getMemId());
pstmt.setString(2, member.getMemPW());
pstmt.setString(3, member.getMemMail());
memId, memPW, memMail을 pstmt 이용해서 작성
데이터베이스가 네트워크상으로 연결된 것이기 때문에 반드시 예외 처리 해야 함.
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, userid, userpw);
String sql = "INSERTT INTO member (memId, memPW, memMail) values (?, ?, ?)";
pstmt.setString(1, member.getMemId());
pstmt.setString(2, member.getMemPW());
pstmt.setString(3, member.getMemMail());
result = pstmt.excecuteUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
맨 마지막에 finally로 자원을 해제하는 코드도 작성!
finally {
try
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public class MemberDao iplements IMemberDao {
private String driver = "oracle.jdbc.driver.OracleDriver";
private String url = "jdbc:oracle:thin:@localhost:~";
(실무에서는 여기에 IP 주소 넣으면 됨)
private String userid = "~";
private String userpw = "~";
private Commection comm = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
@Override
public int memberInset(Member member) {
int ressult = 0;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, userid, userpw);
String sql = "INSERTT INTO member (memId, memPW, memMail) values (?, ?, ?)";
pstmt.setString(1, member.getMemId());
pstmt.setString(2, member.getMemPW());
pstmt.setString(3, member.getMemMail());
result = pstmt.excecuteUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
@Override
public int memberSelect(Member member) {
Member mem = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, userid, userpw);
String sql = "SELECT * FROM member WHERE memId =? AND memPq = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, member.getMemId());
pstmt.setString(2, member.getMemPW());
rs = pstmt.excuteQuery();
while (rs.nest()) {
String memId = rs.getString("memId");
String memPw = rs.getString("mempw");
String memMail = rs.getString("memMAiol");
int memPurcNum = rs.getInt("memPurcNum");
mem = new Member();
mem = new MemId(memId);
mem = new MemPw(memPw);
mem = new MembMail(memMail);
mem = new MemPurcNum(memPurcNum);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
@Override
public int memberUpdate(Member member) {
int ressult = 0;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, userid, userpw);
String sql = "UPDATE member SET membPw = ?, memMail = ? WHERE memId = ?";
pstmt.setString(1, member.getMemId());
pstmt.setString(2, member.getMemPW());
pstmt.setString(3, member.getMemMail());
result = pstmt.excecuteUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
@Override
public int memberDelete(Member member) {
int ressult = 0;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, userid, userpw);
String sql = "DELETE member WHERE memId = ? AND memPw = ?";
pstmt = conn.prepareStatement(sql)
pstmt.setString(1, member.getMemId());
pstmt.setString(2, member.getMemPW());
result = pstmt.excecuteUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}