JDBC 프로그래밍 문제
이전 예제 goodsInfo를 활용해서 키보드로 입력받은 값으로
입력, 수정, 삭제, 조회가 되도록 프로그램을 작성하시오.
조회 : 전체 상품 조회 SELECT
수정 : 코드 선택, 상품명과 가격을 변경 UPDATE
삭제 : 코드 선택, DELETE
입력 : 키보드로 코드, 상품, 가격, 메이커 입력 받아서 INSERT
1. 클래스를 4개 만들어서 따로 동작시키도록 하거나,
2. 클래스를 하나로 하는 경우 4개를 메소드 단위로 분리할 것.
1. 클래스를 4개 만들어서 따로 동작시키는 경우
1) 실행 프로그램
각 메뉴별로 해당 클래스의 객체 생성 후, 객체.해당 클래스의 해당 메소드명으로 실행하면 된다.
package JDBC프로그래밍;
import java.util.*;
public class JdbcTest01 {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
int cmdNo = 0;
while (true) {
System.out.println("");
System.out.println("원하는 메뉴를 선택하십시오.");
System.out.println("1.조회 2.수정 3.삭제 4.입력 5.종료");
cmdNo = scan.nextInt();
if (cmdNo == 1) {
Jdbc_Select select = new Jdbc_Select(); // 조회 클래스의 객체 생성
select.selectMethod(); // 조회 클래스의 조회 메소드 실행
}
else if (cmdNo == 2) {
Jdbc_Update update = new Jdbc_Update(); // 수정 클래스의 객체 생성
update.updateMethod(); // 수정 클래스의 수정 메소드 실행
}
else if (cmdNo == 3) {
Jdbc_Delete delete = new Jdbc_Delete(); // 삭제 클래스의 객체 생성
delete.deleteMethod(); // 삭제 클래스의 삭제 메소드 실행
}
else if (cmdNo == 4) {
Jdbc_Insert insert = new Jdbc_Insert(); // 입력 클래스의 객체 생성
insert.insertMethod(); // 입력 클래스의 입력 메소드 실행
}
else {
scan.close();
break;
}
}
}
}
------------------------------------
2) 조회 클래스 (SELECT)
package JDBC프로그래밍;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
3) 수정 클래스 (UPDATE)
package JDBC프로그래밍;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.*;
public class Jdbc_Update {
public void updateMethod() {
Scanner scan = new Scanner(System.in);
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@211.183.9.66:1521:xe";
String sql = "UPDATE GOODSINFO SET NAME = ?, PRICE = ? WHERE CODE = ?";
Connection con = null;
PreparedStatement pstmt = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, "st02", "st02");
pstmt = con.prepareStatement(sql);
System.out.printf("수정할 코드 입력: ");
String code = scan.next();
System.out.printf("수정할 상품명 입력: ");
String name = scan.next();
System.out.printf("수정할 가격 입력: ");
int price = scan.nextInt();
pstmt.setString(1, name);
pstmt.setInt(2, price);
pstmt.setString(3, code);
int cnt = pstmt.executeUpdate();
System.out.println(cnt + "건이 실행되었습니다.");
}
catch (Exception e) {System.out.println(e.getMessage());}
finally {
try {
pstmt.close();
con.close();
} catch (Exception e) {
}
}
}
}
4) 삭제 클래스 (DELETE)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.*;
public class Jdbc_Delete {
public void deleteMethod() {
Scanner scan = new Scanner(System.in);
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@211.183.9.66:1521:xe";
String sql = "DELETE FROM GOODSINFO WHERE CODE = ?";
String code = "";
Connection con = null;
PreparedStatement pstmt = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, "st02", "st02");
pstmt = con.prepareStatement(sql);
System.out.println("삭제할 코드를 입력하시오");
code = scan.next();
pstmt.setString(1, code);
int cnt = pstmt.executeUpdate();
System.out.println(cnt);
}
catch (Exception e) {System.out.println(e.getMessage());}
finally {
try {
pstmt.close();
con.close();
} catch (Exception e) {
}
}
}
}
5) 입력 클래스 (INSERT)
import java.sql.*
import java.util.*;
public class Jdbc_Insert {
public void insertMethod() {
Scanner scan = new Scanner(System.in);
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@211.183.9.66:1521:xe";
String sql = "INSERT INTO GOODSINFO(CODE,NAME,PRICE,MAKER) VALUES(?, ?, ?, ?)";
Connection con = null;
PreparedStatement pstmt = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, "st02", "st02");
pstmt = con.prepareStatement(sql);
System.out.printf("입력할 코드: ");
String code = scan.next();
System.out.printf("입력할 상품명: ");
String name = scan.next();
System.out.printf("입력할 가격: ");
int price = scan.nextInt();
System.out.printf("입력할 메이커: ");
String maker = scan.next();
pstmt.setString(1, code);
pstmt.setString(2, name);
pstmt.setInt(3, price);
pstmt.setString(4, maker);
int cnt = pstmt.executeUpdate();
System.out.println(cnt + "건이 실행되었습니다.");
}
catch (Exception e) {System.out.println(e.getMessage());}
finally {
try {
pstmt.close();
con.close();
} catch (Exception e) {
}
}
}
}
5) 결과 : 메뉴에 따라 데이터베이스 조회, 수정, 삭제, 입력이 가능한 프로그램이 완성된다.
2. 클래스 하나에 4개의 메소드를 만들어서 동작시키는 경우
1) 실행 프로그램
각 메뉴별로 해당 클래스의 객체 생성 후, 객체.해당 클래스의 해당 메소드 실행하면 된다.
import java.util.*;
public class JdbcTest02 {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
int cmdNo = 0;
while (true) {
System.out.println("");
System.out.println("원하는 메뉴를 선택하십시오.");
System.out.println("1.조회 2.수정 3.삭제 4.입력 5.종료");
cmdNo = scan.nextInt();
if (cmdNo == 1) {
JdbcTest02Method select = new JdbcTest02Method(); // 메소드 클래스의 객체 생성
select.selectMethod(); // 메소드 클래스의 조회 메소드 실행
}
else if (cmdNo == 2) {
JdbcTest02Method update = new JdbcTest02Method();
update.updateMethod(); // 메소드 클래스의 수정 메소드 실행
}
else if (cmdNo == 3) {
JdbcTest02Method delete = new JdbcTest02Method();
delete.deleteMethod(); // 메소드 클래스의 삭제 메소드 실행
}
else if (cmdNo == 4) {
JdbcTest02Method insert = new JdbcTest02Method();
insert.insertMethod(); // 메소드 클래스의 입력 메소드 실행
}
else {
scan.close();
break;
}
}
}
}
2) 메소드 클래스
별도로 만들었던 조회, 수정, 삭제, 입력 4개의 클래스를 하나의 클래스에 4개의 메소드로 구분해서 담았다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;
public class JdbcTest02Method {
Scanner scan = new Scanner(System.in); // 각 메소드별 중복되는 항목 빼냄.
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@211.183.9.66:1521:xe";
public void selectMethod() { // 조회 메소드 (SELECT)
String sql = "SELECT * FROM GOODSINFO";
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, "st02", "st02");
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
String code = rs.getString("CODE");
String name = rs.getString("NAME");
int price = rs.getInt("PRICE");
String maker = rs.getString("MAKER");
System.out.println(code + "\t" + name + "\t" + price + "\t" + maker);
}
}
catch (Exception e) {System.out.println(e.getMessage());}
finally {
try {rs.close();
pstmt.close();
con.close();
} catch (Exception e) {}
}
}
public void updateMethod() { // 수정 메소드 (UPDATE)
String sql = "UPDATE GOODSINFO SET NAME = ?, PRICE = ? WHERE CODE = ?";
Connection con = null;
PreparedStatement pstmt = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, "st02", "st02");
pstmt = con.prepareStatement(sql);
System.out.printf("수정할 코드 입력: ");
String code = scan.next();
System.out.printf("수정할 상품명 입력: ");
String name = scan.next();
System.out.printf("수정할 가격 입력: ");
int price = scan.nextInt();
pstmt.setString(1, name);
pstmt.setInt(2, price);
pstmt.setString(3, code);
int cnt = pstmt.executeUpdate();
System.out.println(cnt + "건이 실행되었습니다.");
}
catch (Exception e) {
System.out.println(e.getMessage());
}
finally {
try {
pstmt.close();
con.close();
} catch (Exception e) {
}
}
}
public void deleteMethod() { // 삭제 메소드 (DELETE)
String sql = "DELETE FROM GOODSINFO WHERE CODE = ?";
String code = "";
Connection con = null;
PreparedStatement pstmt = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, "st02", "st02");
pstmt = con.prepareStatement(sql);
System.out.println("삭제할 코드를 입력하시오");
code = scan.next();
pstmt.setString(1, code);
int cnt = pstmt.executeUpdate();
System.out.println(cnt);
}
catch (Exception e) {System.out.println(e.getMessage());}
finally {
try {
pstmt.close();
con.close();
} catch (Exception e) {
}
}
}
public void insertMethod() { // 입력 메소드 (INSERT)
String sql = "INSERT INTO GOODSINFO(CODE,NAME,PRICE,MAKER) VALUES(?, ?, ?, ?)";
Connection con = null;
PreparedStatement pstmt = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, "st02", "st02");
pstmt = con.prepareStatement(sql);
System.out.printf("입력할 코드: ");
String code = scan.next();
System.out.printf("입력할 상품명: ");
String name = scan.next();
System.out.printf("입력할 가격: ");
int price = scan.nextInt();
System.out.printf("입력할 메이커: ");
String maker = scan.next();
pstmt.setString(1, code);
pstmt.setString(2, name);
pstmt.setInt(3, price);
pstmt.setString(4, maker);
int cnt = pstmt.executeUpdate();
System.out.println(cnt + "건이 실행되었습니다.");
}
catch (Exception e) {
System.out.println(e.getMessage());
}
finally {
try {
pstmt.close();
con.close();
} catch (Exception e) {
}
}
}
}
3) 결과 : 메뉴에 따라 데이터베이스 조회, 수정, 삭제, 입력이 가능한 프로그램이 완성된다.
1.조회 2.수정 3.삭제 4.입력 5.종료
1
10001 플레이스테이션4 420000 소니
10002 플레이스테이션3 300000 LG
10003 디지털 카메라 210000 삼성
10004 컬러액정 전자사전 300000 아이리버
10005 벽걸이 에어컨 450000 삼성
원하는 메뉴를 선택하십시오.
1.조회 2.수정 3.삭제 4.입력 5.종료
2
수정할 코드 입력: 10002
수정할 상품명 입력: PS_Vita
수정할 가격 입력: 300000
1건이 실행되었습니다.
원하는 메뉴를 선택하십시오.
1.조회 2.수정 3.삭제 4.입력 5.종료
1
10001 플레이스테이션4 420000 소니
10002 PS_Vita 300000 LG
10003 디지털 카메라 210000 삼성
10004 컬러액정 전자사전 300000 아이리버
10005 벽걸이 에어컨 450000 삼성
원하는 메뉴를 선택하십시오.
1.조회 2.수정 3.삭제 4.입력 5.종료
3
삭제할 코드를 입력하시오
10002
1
원하는 메뉴를 선택하십시오.
1.조회 2.수정 3.삭제 4.입력 5.종료
1
10001 플레이스테이션4 420000 소니
10003 디지털 카메라 210000 삼성
10004 컬러액정 전자사전 300000 아이리버
10005 벽걸이 에어컨 450000 삼성
원하는 메뉴를 선택하십시오.
1.조회 2.수정 3.삭제 4.입력 5.종료
4
입력할 코드: 10002
입력할 상품명: 갤럭시노트10
입력할 가격: 1000000
입력할 메이커: 삼성
1건이 실행되었습니다.
원하는 메뉴를 선택하십시오.
1.조회 2.수정 3.삭제 4.입력 5.종료
1
10001 플레이스테이션4 420000 소니
10003 디지털 카메라 210000 삼성
10004 컬러액정 전자사전 300000 아이리버
10005 벽걸이 에어컨 450000 삼성
10002 갤럭시노트10 1000000 삼성
원하는 메뉴를 선택하십시오.
1.조회 2.수정 3.삭제 4.입력 5.종료
5
'자바의 기초문법' 카테고리의 다른 글
JDBC 자바 빈즈(Beans) 예제: UPDATE문 (0) | 2016.01.21 |
---|---|
자바 빈즈(Beans) 클래스 (0) | 2016.01.21 |
JDBC 연습: 데이터 검색(SELECT) (0) | 2016.01.07 |
JDBC 프로그래밍 (0) | 2016.01.07 |
HashMap을 이용한 메뉴, 가격 수정 문제 (0) | 2016.01.04 |