Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 집합_SET
- 인터페이스
- 컬렉션프레임워크
- 정수형타입
- 어윈 사용법
- NestedFor
- oracle
- 자바
- 컬렉션 타입
- 한국건설관리시스템
- 대덕인재개발원
- 객체 비교
- 자동차수리시스템
- 사용자예외클래스생성
- 예외미루기
- abstract
- 예외처리
- 추상메서드
- 제네릭
- EnhancedFor
- 참조형변수
- Java
- 환경설정
- exception
- 오라클
- 생성자오버로드
- 메소드오버로딩
- 다형성
- GRANT VIEW
- cursor문
Archives
- Today
- Total
거니의 velog
230914_JDBC 2 본문
[jdbcTest05_2.java]
package kr.or.ddit.basic;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
/*
* LPROD 테이블에 새로운 데이터를 추가한다.
*
* 조건) lprod_gu값과 lprod_nm값은 직접 입력 받아서 처리하고,
* lprod_id값은 현재의 lprod_id값 중에서 제일 큰 값보다 1 크게 한다.
* 입력 받은 lprod_gu값이 이미 등록되어 있으면 다시 입력 받아 처리한다.
*
* select * from lprod
* select max(lprod_id) from lprod
* select count(*) from lprod where lprod_gu = 'P101' -- 반환값 : 1이면 있고, 0이면 없다.
* INSERT INTO lprod (lprod_id, lprod_gu, lprod_nm) VALUES ( ?, ?, ? )
*/
public class jdbcTest05_2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "pc_09";
String password = "java";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, user, password);
// lprod_id값 구하기 ==> 현재의 lprod_id값 중 제일 큰 값보다 1 큰 값으로 한다.
String sql = " select nvl(max(lprod_id), 0) as maxid from lprod ";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
int maxid = 0;
if(rs.next()) {
maxid = rs.getInt(1); // 컬럼 번호 이용
// maxid = rs.getInt("maxid"); // alias명 이용
}
maxid++; // 제일 큰 값 증가하기
//------------------------------------------------------------
// 입력 받은 lprod_gu값이 이미 등록되어 있으면 다시 입력 받아 처리한다.
String gu; // 상품 분류 코드가 저장될 변수 선언
int count = 0; // 검색한 상품 분류 코드의 개수가 저장될 변수 선언
String sql2 = " select count(*) as cnt from lprod where lprod_gu = ? ";
pstmt = conn.prepareStatement(sql2);
do {
System.out.print("상품 분류 코드(LPROD_GU) 입력 >> ");
gu = scan.next();
pstmt.setString(1, gu);
rs = pstmt.executeQuery();
if(rs.next()) {
count = rs.getInt("cnt");
}
if(count > 0) {
System.out.println("입력한 상품 분류 코드 [" + gu + "] 은(는) 이미 등록된 코드입니다.");
System.out.println("다른 코드로 다시 입력하세요...");
System.out.println();
}
}while(count > 0);
//------------------------------------------------------------
System.out.print("상품 분류명(LPROD_NM) 입력 >> ");
String nm = scan.next();
//------------------------------------------------------------
String sql3 = " insert into lprod (lprod_id, lprod_gu, lprod_nm) values (?, ?, ?) ";
pstmt = conn.prepareStatement(sql3);
pstmt.setInt(1, maxid);
pstmt.setString(2, gu);
pstmt.setString(3, nm);
int cnt = pstmt.executeUpdate();
if(cnt > 0) {
System.out.println("insert 성공!!!");
}else {
System.out.println("insert 실패~~~");
}
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
if(rs != null) try { rs.close(); } catch (SQLException e) {}
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
}
}
}
[DBUtil.java]
package kr.or.ddit.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
// JDBC드라이버를 로딩하고
// Connection객체를 생성해서 반환하는 메서드로 구성된 class
public class DBUtil {
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println("드라이버 로딩 실패~~~");
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection conn = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "pc_09";
String password = "java";
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
System.out.println("DB 연결 실패~~~");
e.printStackTrace();
}
return conn;
}
}
[jdbcTest05_2.java]
package kr.or.ddit.basic;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import kr.or.ddit.util.DBUtil;
/*
* LPROD 테이블에 새로운 데이터를 추가한다.
*
* 조건) lprod_gu값과 lprod_nm값은 직접 입력 받아서 처리하고,
* lprod_id값은 현재의 lprod_id값 중에서 제일 큰 값보다 1 크게 한다.
* 입력 받은 lprod_gu값이 이미 등록되어 있으면 다시 입력 받아 처리한다.
*
* select * from lprod order by lprod_id
* select max(lprod_id) from lprod
* select count(*) from lprod where lprod_gu = 'P101' -- 반환값 : 1이면 있고, 0이면 없다.
* INSERT INTO lprod (lprod_id, lprod_gu, lprod_nm) VALUES ( ?, ?, ? )
*/
public class jdbcTest05_2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
// lprod_id값 구하기 ==> 현재의 lprod_id값 중 제일 큰 값보다 1 큰 값으로 한다.
String sql = " select nvl(max(lprod_id), 0) as maxid from lprod ";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
int maxid = 0;
if(rs.next()) {
maxid = rs.getInt(1); // 컬럼 번호 이용
// maxid = rs.getInt("maxid"); // alias명 이용
}
maxid++; // 제일 큰 값 증가하기
//------------------------------------------------------------
// 입력 받은 lprod_gu값이 이미 등록되어 있으면 다시 입력 받아 처리한다.
String gu; // 상품 분류 코드가 저장될 변수 선언
int count = 0; // 검색한 상품 분류 코드의 개수가 저장될 변수 선언
String sql2 = " select count(*) as cnt from lprod where lprod_gu = ? ";
pstmt = conn.prepareStatement(sql2);
do {
System.out.print("상품 분류 코드(LPROD_GU) 입력 >> ");
gu = scan.next();
pstmt.setString(1, gu);
rs = pstmt.executeQuery();
if(rs.next()) {
count = rs.getInt("cnt");
}
if(count > 0) {
System.out.println("입력한 상품 분류 코드 [" + gu + "] 은(는) 이미 등록된 코드입니다.");
System.out.println("다른 코드로 다시 입력하세요...");
System.out.println();
}
}while(count > 0);
//------------------------------------------------------------
System.out.print("상품 분류명(LPROD_NM) 입력 >> ");
String nm = scan.next();
//------------------------------------------------------------
String sql3 = " insert into lprod (lprod_id, lprod_gu, lprod_nm) values (?, ?, ?) ";
pstmt = conn.prepareStatement(sql3);
pstmt.setInt(1, maxid);
pstmt.setString(2, gu);
pstmt.setString(3, nm);
int cnt = pstmt.executeUpdate();
if(cnt > 0) {
System.out.println("insert 성공!!!");
}else {
System.out.println("insert 실패~~~");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(rs != null) try { rs.close(); } catch (SQLException e) {}
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
}
}
}
-- 회원 관리 테이블
create table mymember(
mem_id varchar2(20) not null, -- 회원 ID
mem_pass varchar2(50) not null, -- 비밀번호
mem_name varchar2(30) not null, -- 회원이름
mem_tel varchar2(14) not null, -- 전화번호
mem_addr varchar2(90) not null, -- 주소
constraint pk_mymember primary key (mem_id)
);
[jdbcTest06.java]
package kr.or.ddit.basic;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import kr.or.ddit.util.DBUtil;
/*
* 회원 관리를 하는 프로그램을 작성하시오.
* (MYMEMBER 테이블 이용)
*
* 아래의 메뉴를 구성하고 각 메뉴의 기능을 구현하시오. (CRUD 기능 구현하기)
* 메뉴예시)
* == 작업 선택 ==
* 1. 자료 추가 ==> Create (insert문)
* 2. 자료 삭제 ==> Delete (delete문)
* 3. 자료 수정 ==> Update (update문)
* 4. 전체 자료 출력 ==> Read (select문)
* 0. 작업 끝.
* ------------
*
* 조건)
* 1) 자료 추가에서 '회원ID'는 중복되지 않는다. (중복되면 다시 입력 받는다.)
* 2) 자료 삭제는 '회원ID'를 입력 받아서 처리한다.
* 3) 자료 수정에서 '회원ID'는 변경되지 않는다.
*
* MEM_ID VARCHAR2(20 BYTE)
* MEM_PASS VARCHAR2(50 BYTE)
* MEM_NAME VARCHAR2(30 BYTE)
* MEM_TEL VARCHAR2(14 BYTE)
* MEM_ADDR VARCHAR2(90 BYTE)
*
*/
public class jdbcTest06 {
Scanner scan = new Scanner(System.in);
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
public static void main(String[] args) {
new jdbcTest06().memStart();
}
public int menuList() {
System.out.println("=== 작업 선택 ===");
System.out.println("1. 자료 추가");
System.out.println("2. 자료 삭제");
System.out.println("3. 자료 수정");
System.out.println("4. 전체 자료 출력");
System.out.println("0. 작업 끝");
System.out.println("--------------");
System.out.print("선택 >> ");
int choice = Integer.parseInt(scan.nextLine());
return choice;
}
public void memStart() {
while(true) {
int choice = menuList();
switch(choice) {
case 1: // Create (insert문)
memCreate();
break;
case 2: // Delete (delete문)
memDelete();
break;
case 3: // Update (update문)
memUpdate();
break;
case 4: // Read (select문)
memAllRead();
break;
case 0:
System.out.println("프로그램을 종료합니다...");
System.exit(0);
default:
System.out.println("작업 번호를 잘못 입력하셨습니다.");
System.out.println("다시 선택해 주세요...");
System.out.println();
}
}
}
// 자료 추가
private void memCreate() {
try {
conn = DBUtil.getConnection();
System.out.println();
System.out.println("새롭게 추가할 자료를 입력하세요.");
String memId = null;
int cnt = 0;
do {
System.out.println("새로 등록하실 회원 ID를 입력하세요...");
System.out.print("MEM_ID >> ");
memId = scan.nextLine();
String sql = " select count(*) as cnt from mymember where mem_id = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memId);
rs = pstmt.executeQuery();
if(rs.next()) {
cnt = rs.getInt("cnt");
}
if(cnt > 0) {
System.out.println("이미 있는 회원 아이디 입니다.");
System.out.println("다시 입력해 주세요...");
System.out.println();
}
}while(cnt > 0);
System.out.println("새로 등록하실 회원 비밀번호를 입력하세요...");
System.out.print("MEM_PASS >> ");
String memPass = scan.nextLine();
System.out.println("새로 등록하실 회원 이름을 입력하세요...");
System.out.print("MEM_NAME >> ");
String memName = scan.nextLine();
System.out.println("새로 등록하실 회원 전화번호를 입력하세요...");
System.out.print("MEM_TEL >> ");
String memTel = scan.nextLine();
System.out.println("새로 등록하실 회원 주소를 입력하세요...");
System.out.print("MEM_ADDR >> ");
String memAddr = scan.nextLine();
String sql2 = " insert into mymember values (?, ?, ?, ?, ?) ";
pstmt = conn.prepareStatement(sql2);
pstmt.setString(1, memId);
pstmt.setString(2, memPass);
pstmt.setString(3, memName);
pstmt.setString(4, memTel);
pstmt.setString(5, memAddr);
int result = pstmt.executeUpdate();
if(result > 0) {
System.out.println();
System.out.println("회원 정보 저장 완료!!!");
System.out.println();
}else {
System.out.println();
System.out.println("회원 정보 저장 실패~~~");
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(rs != null) try { rs.close(); } catch (SQLException e) {}
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
}
}
// 자료 삭제
private void memDelete() {
try {
conn = DBUtil.getConnection();
System.out.println();
System.out.print("삭제할 아이디를 입력하세요 >> ");
String delId = scan.nextLine();
String sql = " delete from mymember where mem_id = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, delId);
int result = pstmt.executeUpdate();
if(result > 0) {
System.out.println();
System.out.println("회원 정보 삭제 완료!!!");
System.out.println();
}else {
System.out.println();
System.out.println("해당 회원 아이디 [" + delId + "]를 찾을 수 없습니다.");
System.out.println("회원 정보 삭제 실패~~~");
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(rs != null) try { rs.close(); } catch (SQLException e) {}
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
}
}
// 자료 수정
private void memUpdate() {
try {
conn = DBUtil.getConnection();
String updateID = null;
int cnt = 0;
do {
System.out.print("수정하실 회원 ID를 입력하세요 >>");
updateID = scan.nextLine();
String sql = " select count(*) as cnt from mymember where mem_id = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, updateID);
rs = pstmt.executeQuery();
if(rs.next()) {
cnt = rs.getInt("cnt");
}
if(cnt < 1) {
System.out.println("수정하실 회원 ID가 없습니다.");
System.out.println("다시 입력해 주세요...");
System.out.println();
}
}while(cnt < 1);
System.out.println("변경할 비밀번호를 입력하세요...");
System.out.print("MEM_PASS >> ");
String updatePw = scan.nextLine();
System.out.println("변경할 이름을 입력하세요...");
System.out.print("MEM_NAME >> ");
String updateNm = scan.nextLine();
System.out.println("변경할 연락처를 입력하세요...");
System.out.print("MEM_TEL >> ");
String updateTel = scan.nextLine();
System.out.println("변경할 주소를 입력하세요...");
System.out.print("MEM_ADDR >> ");
String updateAddr = scan.nextLine();
String sql2 = " update mymember set mem_pass = ?, mem_name = ?, mem_tel = ?, mem_addr = ? where mem_id = ? ";
pstmt = conn.prepareStatement(sql2);
pstmt.setString(1, updatePw);
pstmt.setString(2, updateNm);
pstmt.setString(3, updateTel);
pstmt.setString(4, updateAddr);
pstmt.setString(5, updateID);
int result = pstmt.executeUpdate();
if(result > 0) {
System.out.println("회원 정보 수정 완료!!!");
}else {
System.out.println("회원 정보 수정 실패~~~");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(rs != null) try { rs.close(); } catch (SQLException e) {}
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
}
}
// 전체 자료 출력
private void memAllRead() {
try {
conn = DBUtil.getConnection();
System.out.println();
System.out.println("=== 전체 자료 출력 ===");
String sql = " select * from mymember ";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
System.out.println("--------------------------------");
while(rs.next()) {
System.out.println("MEM_ID : " + rs.getString("mem_id"));
System.out.println("MEM_PASS : " + rs.getString("mem_pass"));
System.out.println("MEM_NAME : " + rs.getString("mem_name"));
System.out.println("MEM_TEL : " + rs.getString("mem_tel"));
System.out.println("MEM_ADDR : " + rs.getString("mem_addr"));
System.out.println("--------------------------------");
}
System.out.println();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(rs != null) try { rs.close(); } catch (SQLException e) {}
if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
if(conn != null) try { conn.close(); } catch (SQLException e) {}
}
}
}
'대덕인재개발원_자바기반 애플리케이션' 카테고리의 다른 글
230918_MVC 1 (0) | 2023.09.15 |
---|---|
230915_JDBC 2 (0) | 2023.09.15 |
230913_JDBC 1 (0) | 2023.09.12 |
230912_입출력 6 (0) | 2023.09.11 |
230911_입출력 5 (0) | 2023.09.11 |