상세 컨텐츠

본문 제목

고급 자바_0109-1

자바

by 정재화니 2023. 1. 9. 13:50

본문

jdbc 예제문제를 풀어봅니다.


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


public class JdbcTest05TT {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		Connection conn = null;
		Statement stmt = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "JJH96", "java");
			
			//Lprod_id는 현재의 Lprod_id 중에서 제일 큰 값보다 1 크게 해서 추가한다.
			String sql = "select max(lprod_id) as maxId from lprod";
			
			stmt = conn.createStatement();
			
			rs = stmt.executeQuery(sql);
			
			
			int maxid = 0;	//  다음 번호의 lprod_id값이 저장될 변수
			
			if(rs.next()) {
//				maxid = rs.getInt("maxid"); // alias명 이용
				maxid = rs.getInt(1); 		// 컬럼 번호 이용
			}
			maxid++;
			//===========================================================
			
			// 입력받은 Lprod_gu가 이미 등록되어 있으면 다시 입력 받아서 처리한다.
			String gu;		// 상품분류코드(lprod_gu)가 저장될 변수 선언
			int count = 0;	// 입력한 상품 분류 코드의 개수가 저장될 변수
			
			String sql1 = "select count(*) cnt from lprod where lprod_gu = ?";
			pstmt = conn.prepareStatement(sql1);
			
			do {
				System.out.print("상품 분류 코드(LPROD_GU) 입력 : ");
				gu = sc.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 = sc.next();
			
			String sql2 = "insert into lprod (lprod_id, lprod_gu, lprod_nm) "
					+ " values(?,?,?)";
			
			pstmt = conn.prepareStatement(sql2);
			pstmt.setInt(1, maxid);
			pstmt.setString(2, gu);
			pstmt.setString(3, nm);
			
			int cnt = pstmt.executeUpdate();
			
			if(cnt > 0) {
				System.out.println("등록 성공 !!!");
			}else {
				System.out.println("등록 실패 ~~~");
			}
			
			
		} catch (SQLException e) {
			e.printStackTrace();
		} 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(conn!=null) try{ conn.close();  }catch(SQLException e){}
		}
		
		
	}

}

 

'자바' 카테고리의 다른 글

고급 자바_0111-1  (0) 2023.01.11
고급 자바_0110-1  (1) 2023.01.11
고급 자바_0106-1  (0) 2023.01.06
고급 자바_0105-1  (0) 2023.01.05
고급 자바_0103-1  (0) 2023.01.03

관련글 더보기