DB 연동 실습
!! 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
'국비지원_핀테크' 카테고리의 다른 글
20일차_ [java] javaFX 설치 및 설정 (0) | 2024.03.04 |
---|---|
19일차_ [DB] Local망 내에서 oracle DB 접근하기 (0) | 2024.02.29 |
18일차_ [java] DB 연동 (1) | 2024.02.28 |
18일차_ [DB] 정렬, inner join, group by (1) | 2024.02.28 |
17일차_ [DB] Oracle DB 설치, sqldeveloper 설치 및 DB 생성, 기본 문법 (1) | 2024.02.27 |