-
JDBC연동하기 자바와 DBMS를 연결2자바 2022. 3. 15. 13:43728x90
JDBCProgramming
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.List; import java.util.Scanner; import oracle.jdbc.OracleDriver; public class JDBCProgramming { public static void main(String[] args) throws Exception { /* *JDBC(Java DataBase Connectivity) *자바와 DBMS를 연결 *PDO(Php Data Objects)와 비슷 * *Driver가 필요 (라이브러리 형태로 제공) *Oracle JDBC Driver (object-숫자.jar(숫자는 jdk버전))- 오라클 사용한다하면 벤더(회사)가 제공하는 것 다운 *MariaDB JDBC Driver *SQL Server(MS) Driver *jar: Java ARchive *tar: Tape ARchive T로 시작하는 압축파일 *war: Web Application Archive 웹개발많이쓰임 */ //new OracleDriver(); MemberDAO dao = new MemberDAO(); List<MemberVO> list=dao.getMembers(); for (MemberVO vo : list) { System.out.printf("%s\t %s \t %s \t %s\n",vo.getMemId(),vo.getMemName(),vo.getMemHp(),vo.getMemMail()); } Scanner scanner = new Scanner(System.in); System.out.print("조회할 아이디를 입력하세요:"); String searchId=scanner.next(); MemberVO vo=dao.getMember(searchId); if(vo!=null) { //System.out.println(vo); System.out.println("이름:"+vo.getMemName()); System.out.println("직업:"+vo.getMemJob()); } System.out.print("수정할 아이디를 입력하세요:"); String memId=scanner.next(); System.out.print("변경할 직업을 입력하세요:"); String memJob=scanner.next(); MemberVO updateVO=new MemberVO(); //MemberVO클래스에 빈생성자 만들어주기 why?매개변수 다 써야하므로 updateVO.setMemJob(memJob); updateVO.setMemId(memId); //직업변경 int updateMember=dao.updateMember(updateVO); //변경 성공시 화면에 내용 출력 if(updateMember>0) { MemberVO member=dao.getMember(memId); System.out.println(member.getMemName()+":"+member.getMemJob()); } scanner.close(); } }
더보기MemberDAO
import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import oracle.jdbc.OracleDriver; public class MemberDAO { //CRUD(Create, Read, Update Delete): insert, select, update delete //조회 (목록) public List<MemberVO> getMembers() throws Exception{ /* * JDBC순서 * 0. 드라이버 로딩 * 1. 드라이버를 통해 DB접속(Connection)(DB서버 주소, 사용자계정, 비밀번호 필요) * 2. 쿼리문 작성할 객체 생성(Statement) * 3. 쿼리(질의)문 작성한 뒤 실행 * 4. 실행 결과를 돌려받음(ResultSet: select에만 필요, 수정하는것들은 필요x) * 5. 자원 반납 */ //0.드라이버 로딩 Class.forName("oracle.jdbc.OracleDriver"); //개발할때는 try가 좋다. 지금은 문장 수 때문에 throws사용 //드라이버를 통해 DB 접속 Connection connection=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","LAI","java"); //주소(localhost:내컴퓨터이기 때문) 계정명 비밀번호 //쿼리문 작성 객체 생성 Statement statement=connection.createStatement(); //쿼리문 작성 String sql="select mem_id,mem_name, mem_hp,mem_mail from member"; //쿼리문 실행 후 결과 받기 ResultSet resultSet=statement.executeQuery(sql); List<MemberVO> list = new ArrayList<MemberVO>(); while(resultSet.next()) { String memId=resultSet.getString("mem_id"); String memName=resultSet.getString("mem_name"); String memHp=resultSet.getString("mem_hp"); String memMail=resultSet.getString("mem_mail"); list.add(new MemberVO(memId, memName, memHp, memMail)); } //자원반납 resultSet.close(); statement.close(); connection.close(); return list; } //조회(상세) public MemberVO getMember(String id) throws Exception{ Class.forName("oracle.jdbc.OracleDriver"); Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","LAI","java"); Statement statement = connection.createStatement(); String sql="select mem_id,mem_name, mem_hp, mem_mail, mem_add1, mem_add2, mem_bir,mem_job from member where mem_id='"+id+"'"; ResultSet resultSet = statement.executeQuery(sql); MemberVO vo=null; if(resultSet.next()) { String memId=resultSet.getString("mem_id"); String memName=resultSet.getString("mem_name"); String memHp=resultSet.getString("mem_hp"); String memMail=resultSet.getString("mem_mail"); String memAdd1=resultSet.getString("mem_add1"); String memAdd2=resultSet.getString("mem_add2"); Date memBir=resultSet.getDate("mem_bir"); String memJob=resultSet.getString("mem_job"); vo = new MemberVO(memId, memName, memHp, memMail, memAdd1, memAdd2, memBir, memJob); } resultSet.close(); statement.close(); connection.close(); return vo; } //등록 public void insertMember(MemberVO vo) { } public int updateMember(MemberVO vo) throws Exception { //Class.forName("oracle.jdbc.OracleDriver"); 밑 문장과 같음, 둘다 등록하는 코드 DriverManager.registerDriver(new OracleDriver()); Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","LAI","java"); String sql="update member set mem_job=? where mem_id=?"; //mem_name='"+vo.getMemName()"' , 보기 안좋으니 먼저 위에 sql선언 나중에 ?에만 데이터 넣을거야 PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, vo.getMemJob()); //1이 첫번째 물음표 statement.setString(2, vo.getMemId()); //업데이트를 실행하고 난 결과:업데이트 한 row 갯수 int executeUpdate = statement.executeUpdate(); //sql넣으면 위에 statement쓰는것임 statement.close(); connection.close(); return executeUpdate; } public void deleteMember(String id) { } }
더보기MemberVO
※ VO(Value Object): 값 저장 객체
※ DTO(Data Transfer Object):값 전달 객체import java.sql.Date; import java.util.Objects; public class MemberVO { private String memId; private String memName; private String memHp; private String memMail; private String memAdd1; private String memAdd2; private Date memBir; private String memJob; public MemberVO() { } public MemberVO(String memId, String memName, String memHp, String memMail) { this.memId = memId; this.memName = memName; this.memHp = memHp; this.memMail = memMail; } public MemberVO(String memId, String memName, String memHp, String memMail, String memAdd1, String memAdd2, Date memBir, String memJob) { this.memId = memId; this.memName = memName; this.memHp = memHp; this.memMail = memMail; this.memAdd1 = memAdd1; this.memAdd2 = memAdd2; this.memBir = memBir; this.memJob = memJob; } public String getMemId() { return memId; } public void setMemId(String memId) { this.memId = memId; } public String getMemName() { return memName; } public void setMemName(String memName) { this.memName = memName; } public String getMemHp() { return memHp; } public void setMemHp(String memHp) { this.memHp = memHp; } public String getMemMail() { return memMail; } public void setMemMail(String memMail) { this.memMail = memMail; } public String getMemAdd1() { return memAdd1; } public void setMemAdd1(String memAdd1) { this.memAdd1 = memAdd1; } public String getMemAdd2() { return memAdd2; } public void setMemAdd2(String memAdd2) { this.memAdd2 = memAdd2; } public Date getMemBir() { return memBir; } public void setMemBir(Date memBir) { this.memBir = memBir; } public String getMemJob() { return memJob; } public void setMemJob(String memJob) { this.memJob = memJob; } @Override public int hashCode() { return Objects.hash(memId); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; MemberVO other = (MemberVO) obj; return Objects.equals(memId, other.memId); } @Override public String toString() { return "MemberVO [memId=" + memId + ", memName=" + memName + ", memHp=" + memHp + ", memMail=" + memMail + ", memAdd1=" + memAdd1 + ", memAdd2=" + memAdd2 + ", memBir=" + memBir + ", memJob=" + memJob + "]"; } }
[결과]
728x90'자바' 카테고리의 다른 글
초급자바 프로젝트 (0) 2022.03.23 자바 프로젝트 jar 실행 파일 만들기 (0) 2022.03.23 콘솔에서 실행할 수 있는 메모앱 (0) 2022.03.15 JDBC연동하기 자바와 DBMS를 연결 (0) 2022.03.14 Arrays.sort() (0) 2022.03.11