ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JDBC연동하기 자바와 DBMS를 연결2
    자바 2022. 3. 15. 13:43
    728x90
    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
Designed by Tistory.