[예제 9월 17일] 우편번호 찾기 프로그램
2009. 9. 17. 12:32
우편번호 저장 빈
package net.jeongsam.zipfinder; public class ZipData { private Integer seq; private String zipcode; private String sido; private String gugun; private String dong; private String bunji; public Integer getSeq() { return seq; } public void setSeq(Integer seq) { this.seq = seq; } public String getZipcode() { return zipcode; } public void setZipcode(String zipcode) { this.zipcode = zipcode; } public String getSido() { return sido; } public void setSido(String sido) { this.sido = sido; } public String getGugun() { return gugun; } public void setGugun(String gugun) { this.gugun = gugun; } public String getDong() { return dong; } public void setDong(String dong) { this.dong = dong; } public String getBunji() { return bunji; } public void setBunji(String bunji) { this.bunji = bunji; } }
우편번호 매니저
package net.jeongsam.zipfinder; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Collection; public class ZipManager { private Collection<ZipData>zipTable = new ArrayList<ZipData>(); public Collection<ZipData> search(String dong) throws ClassNotFoundException, SQLException { Connection conn = null; Statement stmt = null; ResultSet rs = null; // DB 접속 정보 (URL 형식) String url = "jdbc:mysql://127.0.0.1/example"; // DB에 전달할 SQL문 StringBuilder sql = new StringBuilder(); sql.append("SELECT seq, zipcode, sido, gugun, dong, bunji "); sql.append("FROM ziptable "); sql.append("WHERE dong LIKE '%" + dong + "%'"); // System.out.println(sql.toString()); try { // JDBC 드라이버 로딩 Class.forName("com.mysql.jdbc.Driver"); // DBMS에 연결 : Connection 인스턴스 생성 conn = DriverManager.getConnection(url, "root", "암호"); // Query 객체 생성 : SQL문 DB로 전달 stmt = conn.createStatement(); // SQL 문 DB로 전달 실행하여 ResultSet으로 결과 받음 rs = stmt.executeQuery(sql.toString()); // ResultSet에 담긴 데이터를 JavaBean 컬렉션으로 복사 while (rs.next()) { // 행(row)를 담을 JavaBean 인스턴스 생성 ZipData zipRecord = new ZipData(); // JavaBean에 ResultSet 행(row)를 복사 zipRecord.setSeq(rs.getInt(1)); zipRecord.setZipcode(rs.getString(2)); zipRecord.setSido(rs.getString(3)); zipRecord.setGugun(rs.getString(4)); zipRecord.setDong(rs.getString(5)); zipRecord.setBunji(rs.getString(6)); // JavaBean을 컬렉션에 추가 zipTable.add(zipRecord); } } finally { } return zipTable; } }
우편번호 찾기 메인 클래스
package net.jeongsam.zipfinder; import java.sql.SQLException; import java.util.Collection; import java.util.Iterator; public class ZipFinder { public static void main(String[] args) { ZipManager zipMgr = new ZipManager(); Collection<ZipData> result = null; try { if (args.length != 1) { System.out.println("Usage: ZipFinder 동이름"); } else { result = zipMgr.search(args[0]); if (result == null) { System.out.println("찾는 주소가 없습니다."); } else { Iterator<ZipData> itZipTable = result.iterator(); while (itZipTable.hasNext()) { ZipData zipRec = itZipTable.next(); System.out.print(zipRec.getZipcode() + " "); System.out.print(zipRec.getSido() + " "); System.out.print(zipRec.getGugun() + " "); System.out.print(zipRec.getDong() + " "); System.out.println(zipRec.getBunji() + " "); } } } } catch (ClassNotFoundException e) { System.err.println("JDBC 드라이버 로딩 에러!!"); } catch (SQLException e) { System.err.println("DB 연결 에러!!"); e.printStackTrace(); } } }