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 |