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){}
}
}
}