티스토리 뷰
반응형
Oracle DB와 이클립스를 연동하여 로그인 클래스를 생성해보자.
우선 위와 같이 Build path를 이용하여 오라클 DB와 연동해주고 라이브러리에 하위 클래스를 생성한다.
그리고 SQL을 이용하여 기본적인 테이블 및 스키마를 설정한다.
DAO class
/** * DAO ( Data Access Object) : Java Beans : CRUD(DML) methods * */ package com.kysoft.member; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; /** * @author KYU */ public interface DAO { static final String oracleDriver="oracle.jdbc.OracleDriver"; //oracle.jdbc.driver.OracleDriver static final String oracleURL="jdbc:oracle:thin:@localhost:1521:xe"; static final String oracleId="java"; static final String oraclePw="1234"; // JDBC 연결 메소드(method) public Connection getConnection() throws ClassNotFoundException, Exception; // 인원현황을 얻어오는 메소드 : select * from member2 public ArrayList<Member> getMembers() throws SQLException, Exception; }
Member class
package com.kysoft.member; /** * @author KYU */ public class Member { // DB table(member2)의 일치 private String id; // id field (varchar2(20) : PK) private String pw; // pw field (varchar2(20)) public String getId() { return id; } public String getPw() { return pw; } public void setId(String id) { this.id = id; } public void setPw(String pw) { this.pw = pw; } }
MemberDAO class
package com.kysoft.member; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.sql.PreparedStatement; import java.sql.ResultSet; /** * @author KYU */ public class MemberDAO implements DAO { /* (non-Javadoc) * @see com.kysoft.member.DAO#getConnection() */ @Override public Connection getConnection() throws ClassNotFoundException, Exception { Connection con = null; // JDBC와의 연결 객체 초기화 try{ Class.forName(oracleDriver); // JDBC Driver 검색 con = DriverManager.getConnection(oracleURL,oracleId,oraclePw); // JDBC URL -> DB 연결 } catch(ClassNotFoundException e){ // JDBC driver 부재시 예외처리 System.out.println("예외처리 1:"+e.getMessage()); // 예외 메시지 (console) 인쇄 e.printStackTrace(); } catch(Exception e){ // 모든 예외상황 처리 System.out.println("예외처리 2:"+e.getMessage()); e.printStackTrace(); } finally { // System.out.println("JDBC 드라이버와 연결되었습니다"); } return con; } /* (non-Javadoc) * @see com.kysoft.member.DAO#getMembers() */ @Override public ArrayList<Member> getMembers() throws SQLException, Exception { Connection con = null; PreparedStatement pstmt = null; // 미리처리하기 때문에 쓴다. (빠르다) // Statement pstmt = null; ResultSet rs = null; ArrayList<Member> members = new ArrayList<Member>(); Member member; // DB Table 의 1개의 레코드(record : row)를 불러오기 위한 temp(임시) 변수 con = getConnection(); String sql = "SELECT * FROM MEMBER2"; try { pstmt = con.prepareStatement(sql); rs = pstmt.executeQuery(); //pstmt = con.createStatement(); -> //sql을 후에 처리 \ PraparedStatement 보다 SQL 구문 처리가 한단계 //늦기 때문에 SQL 처리 성능이 저하 //rs = pstmt.executeQuery(sql); //※ CallableStatement : PL/SQL 처리할때 사용 while(rs.next()){ member = new Member(); // temp member.setId(rs.getString("id")); // id 필드값을 가져옴 member.setPw(rs.getString("pw")); // pw 필드값을 가져옴 members.add(member); // 한명의 정보 -> 전체 인원 현황 객체 } rs.close(); pstmt.close(); con.close(); } catch(SQLException e) { System.out.println("예외처리 3:"+e.getMessage()); // 예외 메시지 (console) 인쇄 e.printStackTrace(); } catch(Exception e) { System.out.println("예외처리 4:"+e.getMessage()); e.printStackTrace(); } return members; } }
로그인 예제
import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; import com.kysoft.member.MemberDAO; import com.kysoft.member.Member; class Javaex25 { public static void main(String[] args) { HashMap<String, String> map = new HashMap<String, String>(); MemberDAO dao = new MemberDAO(); ArrayList<Member> members = new ArrayList<Member>(); try { members = dao.getMembers(); for(int i=0; i<members.size();i++) map.put(members.get(i).getId(),members.get(i).getPw()); Scanner s = new Scanner(System.in); // 화면으로부터 라인단위로 입력받는다. while(true) { System.out.println("id와 password를 입력해주세요."); System.out.print("id :"); String id = s.nextLine().trim(); System.out.print("password :"); String password = s.nextLine().trim(); System.out.println(); if(!map.containsKey(id)) { System.out.println("입력하신 id는 존재하지 않습니다. 다시 입력해주세요."); continue; } else { if(!(map.get(id)).equals(password)) { System.out.println("비밀번호가 일치하지 않습니다. 다시 입력해주세요."); } else { System.out.println("id와 비밀번호가 일치합니다."); break; } } } // while } catch(SQLException e) { System.out.println("예외처리 :"+e.getMessage()); // 예외 메시지 (console) 인쇄 e.printStackTrace(); } catch(Exception e) { System.out.println("예외처리 6:"+e.getMessage()); e.printStackTrace(); } } // main }
결과
id와 password를 입력해주세요.
id : a000001
password :1234
입력하신 id는 존재하지 않습니다. 다시 입력해주세요.
id와 password를 입력해주세요.
id :a0000001
password :1234
비밀번호가 일치하지 않습니다. 다시 입력해주세요.
id와 password를 입력해주세요.
id :a0000001
password :12345678
id와 비밀번호가 일치합니다.
반응형
'IT & programming > Java' 카테고리의 다른 글
8/20 - Event의 종류와 관련 인터페이스 (0) | 2012.08.20 |
---|---|
8/17 - 필기 (0) | 2012.08.17 |
8/9 - 필기 (0) | 2012.08.09 |
8/8 - Collection 요약정리 (0) | 2012.08.08 |
8/7 - java.lang 패키지 : 문자열과 기본형간의 변환 (0) | 2012.08.07 |
댓글