LPRODテーブルに新しいデータを追加

3014 ワード

package kr.or.didt.basic;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

/*
 *  LPROD 테이블에 새로운 데이터를 추가하기
 * 
 *  lprod_gu와 lprod_nm은 직접 입력받아서 처리하고,
 *  lprod_id는 현재의 lprod_id값 중에서 제일 큰 값보다 1 크게 한다.
 *  
 *  입력받은 lprod_gu가 이미 등록되어 있으면 다시 입력받아서 처리한다.
 *  
 *  
 */

public class JdbcTest06 {

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		
		Connection conn = null;
		Statement stmt = null;
		PreparedStatement pstmt = null;
		PreparedStatement pstmt2 = null;
		ResultSet rs = null;
		
		try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
			
			conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:xe", "JSG99", "java");
			
			//1. lprod_id는 현재의 lprod_id값 중에서 제일 큰 값보다 1 크게 한다.
			String sql = "select nvl(max(lprod_id), 0)maxnum from lprod";
			stmt = conn.createStatement();
			
			rs = stmt.executeQuery(sql);
			
			int maxNum = 0;
			if(rs.next()){
				maxNum = rs.getInt("maxNum");
				
			}
			maxNum++; //증가시키기
			//---------------------------------------------------------
			
			//2. 입력받은 lprod_gu가 이미 등록되어 있으면 다시 입력받아서 처리한다.
			String gu = null; // '상품 분류 코드'가 저장될 변수 선언
			int count = 0; //입력한 '상품 분류 코드'의 개수가 저장될 변수 선언
			do{
				System.out.println("상품 분류 코드(LPROD_GU)입력 : ");
				gu = scan.next();
			
				String sql2 = "select count(*) cnt from lprod "
						+"where lprod_gu = ?";
				pstmt = conn.prepareStatement(sql2);
				pstmt.setString(1, gu);
			
				rs = pstmt.executeQuery();
				
				if(rs.next()){
					count = rs.getInt("cnt");
				}
				
				if(count > 0){
					System.out.println("입력한 상품 분류 코드" + gu 
							+ "는(은) 이미 등록된 코드입니다.");
					System.out.println("다시 입력하세요.");
				}
				
			}while(count>0);
			
			System.out.println("상품 분류명(LPROD_NM) 입력 :");
			String nm = scan.next();
			
			String sql3 = "insert into lprod (lprod_id, lprod_gu, lprod_nm)"
					+ "values(?,?,?)";
			pstmt2 = conn.prepareStatement(sql3);
			pstmt2.setInt(1, maxNum);
			pstmt2.setString(2, gu);
			pstmt2.setString(3, nm);
			
			int cnt = pstmt2.executeUpdate();
			
			if(cnt>0){
				System.out.println("등록 성공~");
			}else{
				System.out.println("등록 실패!!");
			}
			
		} catch (SQLException e) {
			// TODO: handle exception
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} finally {
			if(rs!=null) try{ rs.close();  }catch(SQLException e){}
			if(stmt!=null) try{ stmt.close();  }catch(SQLException e){}
			if(pstmt!=null) try{ pstmt.close();  }catch(SQLException e){}
			if(pstmt2!=null) try{ pstmt2.close();  }catch(SQLException e){}
			if(conn!=null) try{ conn.close();  }catch(SQLException e){}
		}
		
		
		
		
		
		
	}

}