JDBC PreparedStatement - INSERT, DELETE

유광진·2023년 8월 1일
4

1. PreparedStatement - INSERT

이번엔 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();

결과

2. PreparedStatement - DELETE

이번엔 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 문을 실행하고, 실행 결과에 따라 "삭제 성공" 또는 "삭제 실패"를 출력하는 부분을 넣고 싶어 작성한 부분이다.

profile
백엔드 개발자 유광진 입니다.

6개의 댓글

comment-user-thumbnail
2023년 8월 1일

이런 유용한 정보를 나눠주셔서 감사합니다.

1개의 답글
comment-user-thumbnail
2023년 8월 2일

하트 누르고 가요~~

1개의 답글
comment-user-thumbnail
2023년 8월 2일

유익한 정보 감사합니다

1개의 답글