문제
LPROD 테이블에 새로운 데이터 추가하기
lprod_gu와 lprod_nm은 직접 입력받아서 처리하고, lprod_id는 현재의 lprod_id값 중에 제일 큰값+1 한다
입력받은 lprod_gu가 이미 등록되어 있으면 다시 입력 받아서 처리한다.
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;
public class JdbcTest05 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JIN96","java");
int max = 0;
rs = conn.prepareStatement("select max(lprod_id) from lprod ").executeQuery();
while(rs.next()) {
max=rs.getInt(1)+1;
}
String gu = "";
while(true) {
int chk = 0;
System.out.print("lprod_gu >> ");
gu = scan.nextLine().toUpperCase();
pstmt = conn.prepareStatement("select 1 from lprod where lprod_gu = ?");
pstmt.setString(1, gu);
rs = pstmt.executeQuery();
while(rs.next()) {
chk=rs.getInt(1);
}
if(chk==1) {
System.out.println("중복되었습니다. 다시 입력해주세요.");
} else {
break;
}
}
System.out.print("lprod_nm >> ");
String nm = scan.nextLine();
String sql = "insert into lprod(lprod_id, lprod_gu, lprod_nm) values(?, ?, ?)";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, max);
pstmt.setString(2, gu);
pstmt.setString(3, nm);
int cnt = pstmt.executeUpdate();
System.out.println(cnt+"행이 변경되었습니다");
} catch (SQLException e) {
// TODO: handle exception
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
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) {}
}
}
}