이번엔 JDBC PreparedStatement를 이용해 DB값을 추가(insert)를 해보자.
SQL에서 테이블에 새로운 데이터값을 추가할려면
INSERT INTO 테이블명 VALUES (데이터값);
이런식으로 쿼리를 작성하였는데 자바도 비슷한 양식으로 코드를 작성해주면 된다.
먼저 MariaDB에 있는 sangdata 테이블을 조회해보자.
저번코드에서 똑같은 양식이지만 insertsql 이라는 문자열(String)참조명을 사용해 insert 조건양식을 추가하였다.
private void accessdb() {
try {
conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:포트번호/test", "root", "*******");
// 테이블의 자료 추가 (insert)
// insertsql 참조변수에 sangdata 테이블에 새로운 데이터 값을 동적으로 추가하는데 prepareStatement을 사용함으로 인해 매개변수는 ?라 표시한다.
String insertsql = "insert into sangdata values(?,?,?,?)";
// Connection 객체인 conn을 사용하여 PreparedStatement 객체를 생성
pstmt = conn.prepareStatement(insertsql);
} catch (Exception e) {
System.out.println();
System.exit(0);
} finally {
try {
if(rs != null) rs.close();
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (Exception e2) {
}
}
}
레코드가 5열까지 있음으로 6번부터 데이터 값을 넣어주었다.
pstmt.setString(1, "6");
pstmt.setString(2, "아식스");
pstmt.setString(3, "15");
pstmt.setString(4, "199000");
pstmt.executeUpdate();
결과
이번엔 INSERT문으로 데이터 값을 추가한 아식스라는 레코드를 지워보자.
private void accessdb() {
try {
conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:포트번호/test", "root", "*******");
// 테이블 자료 삭제
// deletesql 참조변수에 sangdata 테이블에서 code 칼럼값에 해당되는 데이터 값을 삭제한다는 의미.
String deletesql = "delete from sangdata where code = ?";
pstmt = conn.prepareStatement(deletesql);
// sangdata 테이블에서 code 라는 컬럼값을 변경한다고 했으니 첫번째 레코드와 데이터 값이 5라고 지정했으니 그 값을 지운다는 의미.
pstmt.setString(1, "5");
int result = pstmt.executeUpdate();
if(result > 0)
System.out.println("삭제 성공");
else
System.out.println("삭제 실패");
} catch (Exception e) {
System.out.println("연결 실패 : " + e);
System.exit(0);
}
문자열 타입의 deletesql 참조명을 이용해 "delete from sangdata where code = ?"; 실행문을 넣어주었다.
조건엔 where code = ? 설정했음으로 sangdata 테이블에서 code 칼럼 값이 특정 값과 일치하는 레코드를 삭제한다.
int result = pstmt.executeUpdate();
if(result > 0)
System.out.println("삭제 성공");
else
System.out.println("삭제 실패");
데이터베이스에서 SQL 문을 실행하고, 실행 결과에 따라 "삭제 성공" 또는 "삭제 실패"를 출력하는 부분을 넣고 싶어 작성한 부분이다.
이런 유용한 정보를 나눠주셔서 감사합니다.