본문 바로가기

국비지원_핀테크

19일차_ [java] oracle DB 연동 실습

 

 

 

 

 

DB 연동 실습

 

eclipse 파일 세팅

 

 

!! DB 는 기존에 생성해놨던 member_test 테이블을 사용 !!

 

 

                             

DB 연동 순서

프로젝트 라이브러리에 jdbc 를 추가 (위 동영상 참고) > module-info 에 라이브러리 추가 문구 작성 > 오라클 명령어를 사용할 수 있게 드라이버를 연동 ( Class.forName("oracle.jdbc.driver.OracleDriver") > Connection 객체를 통해 DB 연결 > PreparedStatement 객체를 통해 명령어를 DB 에 전송 > ResultSet 객체를 통해 명령어 수행 결과를 저장하여 출력

                             

 

package ex01.service;

public interface MemberService {
	// 회원 보기 기능 구현
	public void memberView();
	// 회원 수정 기능 구현
	public void modify();
}

MemberService 인터페이스

 

package ex01.service;

import java.util.ArrayList;
import java.util.Scanner;

import ex01.dao.MemberDAO;
import ex01.dto.MemberDTO;

public class MemberServiceImpl implements MemberService {
	private MemberDAO dao;
	public MemberServiceImpl() {
		// 기본 생성자를 통해 db 서버에 접속
		dao = new MemberDAO();
	}
	
	public void memberView() {
		System.out.println("회원 보기 기능");
		ArrayList<MemberDTO> members = dao.getMembers();
		if(members.size() == 0) {
			System.out.println("등록된 정보가 없습니다.");
		}else {
			for(int i=0; i<members.size(); i++) {
				MemberDTO m = members.get(i);
				System.out.println();
				System.out.println("id : " + m.getId());
				System.out.println("pwd : " + m.getPwd());
				System.out.println("name : " + m.getName());
				System.out.println("age : " + m.getAge());
				System.out.println();
			}
		}
	}
	public void modify() {
		System.out.println("수정 기능");
		Scanner input = new Scanner(System.in);
		String id, pwd, name;
		int age;
		
		while(true) {
			System.out.print("수정할 아이디 입력 : ");
			id = input.next();
			MemberDTO m = dao.memberChk(id);
			if(m != null) {
				break;
			}else {
				System.out.println("존재하지 않는 id 입니다....");
			}
		}
		
		System.out.print("수정할 패스워드 입력 : ");
		pwd = input.next();
		System.out.print("수정할 이름 입력 : ");
		name = input.next();
		System.out.print("수정할 나이 입력 : ");
		age = input.nextInt();
		
		MemberDTO dto = new MemberDTO();
		dto.setId(id);
		dto.setPwd(pwd);
		dto.setName(name);
		dto.setAge(age);
		//int result = dao.modify(dto);
		int result = dao.modify(id,pwd, name, age);
		
		if(result == 1) {
			System.out.println("수정되었습니다.");
		}else {
			System.out.println("수정 실패!!!");
		}
	}
}

MemberServiceImpl 클래스

 

package ex01.main;

import java.util.Scanner;

import ex01.service.MemberService;
import ex01.service.MemberServiceImpl;

public class MainClass {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		// 생성자 호출하여 db 로 연결
		MemberService ms = new MemberServiceImpl();
		int num;
		while(true) {
			System.out.println();
			System.out.println("1. 회원 보기");
			System.out.println("2. 회원 수정");
			System.out.println("3. 종 료");
			System.out.print(">>> : ");
			num = input.nextInt();
			switch(num) {
			case 1: 
				ms.memberView();
				break;
			case 2: 
				ms.modify();
				break;
			case 3: 
				System.out.println("프로그램 종료!!!");
				return;
			}
		}
	}
}

MainClass 클래스

 

package ex01.dto;

public class MemberDTO {
	private String id, pwd, name;
	private int age;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

MemberDTO 클래스

 

package ex01.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import ex01.dto.MemberDTO;

public class MemberDAO {
	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	public MemberDAO() {
		try {
			// oracle 드라이버 호출
			Class.forName("oracle.jdbc.driver.OracleDriver");
			// db 경로
			String url = "jdbc:oracle:thin:@localhost:1521:orcl";
			// db 계정정보 확인
			String id = "c##youngho3358", pwd = "1234";
			con = DriverManager.getConnection(url, id, pwd);
		}catch(Exception e) {
			e.printStackTrace();
		}
	}


	public ArrayList<MemberDTO> getMembers() {
		String sql = "select * from member_test";
		ArrayList<MemberDTO> mem = new ArrayList<>();
		try {
			ps = con.prepareStatement(sql);
			rs = ps.executeQuery();

			while(rs.next()) {
				MemberDTO dto = new MemberDTO();
				dto.setId(rs.getString("id"));
				dto.setPwd(rs.getString("pwd"));
				dto.setName(rs.getString("name"));
				dto.setAge(rs.getInt("age"));
				mem.add(dto);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return mem;
	}


	public MemberDTO memberChk(String id) {
		String sql = "select * from member_test where id=?";
		MemberDTO dto = null;
		try {
			ps = con.prepareStatement(sql);
			ps.setString(1, id);
			rs = ps.executeQuery();
			if(rs.next()) {
				dto = new MemberDTO();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return dto;
	}


	public int modify(MemberDTO dto) {
		String sql = "update memebr_test set pwd=?, name=?, age=? where id=?";
		int result = 0;
		try {
			ps = con.prepareStatement(sql);
			ps.setString(1, dto.getPwd());
			ps.setString(2, dto.getName());
			ps.setInt(3, dto.getAge());
			ps.setString(4, dto.getId());

			// executeUpdate 는 쿼리문이 정상적으로 실행되면 1 반환, 오류면 0 반환
			result = ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}


	public int modify(String id, String pwd, String name, int age) {
		System.out.println("매개변수 4개 modify 실행!!!!!!");
		String sql = "update member_test set pwd=?, name=?, age=? where id=?";
		int result = 0;
		try {
			ps = con.prepareStatement(sql);
			ps.setString(1, pwd);
			ps.setString(2, name);
			ps.setInt(3, age);
			ps.setString(4, id);

			// executeUpdate 는 쿼리문이 정상적으로 실행되면 1 반환, 오류면 0 반환
			result = ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
}

MemberDAO 클래스

728x90