728x90
반응형
insert 방식으로 delete 구문을 실행 했을때의 문제점은 없을까?
예시 코드를보자
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Scanner sc= new Scanner(System.in);
System.out.println("삭제하실 상품의 번호를 입력해주세요");
int num =sc.nextInt();
sc.close();
Class.forName("oracle.jdbc.OracleDriver");
Connection con= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "kh", "kh");
String sql ="delete product where (no=?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, num);
ps.execute();
con.close();
System.out.println("삭제가 완료되었습니다");
위 코드의 문제점으로 보면 없는 데이터도 삭제가 된다

삭제가 되었다면
1개의 행이(가) 삭제되었습니다 라고나온다.
그러면 이러한 문제를 어떻게 해결해야하는가 ?
https://docs.oracle.com/javase/8/docs/api/
Java Platform SE 8
docs.oracle.com
java.sql -> PreparedStatement 에가면 execute() api를 볼수잇다
아래보면 excuteUpdate()는 반환형이 int 형이다.
그래서 사용 법을 보자면
//입력
int no = 10;
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "kh", "kh");
String sql = "delete product where no=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, no);
//ps.execute(); //해당명령으로는 삭제가 성공햇는지 실패햇는지 파악할수 없다.
int count = ps.executeUpdate(); //해당명령은 실행후 적용된 행 개수를 반환한다
con.close();
System.out.println("count="+count);
if(count>0) {
System.out.println("삭제완료");
}else {
System.out.println("해당하는 상품이 존재하지 않습니다.");
}
}
}
ps.execute -> ps.excuteUpdate 로 변경해주면 된다
그후 조건을걸어 삭제 유무를 판단해준다
'[DBMS] > - Oracle' 카테고리의 다른 글
[Oracle]Select (0) | 2022.05.31 |
---|---|
[Oracle]update (0) | 2022.05.31 |
[Oracle]Insert 기초 (0) | 2022.05.31 |
[Oracle]DML/DCL/DDL (0) | 2022.05.30 |
[Oracle]이클립스에서 디비연결 / JDBC (0) | 2022.05.30 |
댓글