[JDBC] 자료 추가, 수정, 삭제

혜쿰·2023년 7월 31일
0
post-custom-banner

📌 개념

JAVA에서도 SQL문법을 적용해서 자료를 추가, 수정, 삭제할 수 있다.
저번 포스팅에서 작성했듯이 SQL문을 활용해 자료를 읽어오는 명령어는 executeQuery(); 였다.
하지만, 자료를 추가, 수정, 삭제하는 명령어는 executeQuery();를 활용해야 한다.

📍 자료 추가

(autocommit이 기본이다.)

String isql = "insert into sangdata values (5, '새우깡' ,5 ,1500)";
stmt.executeUpdate(isql);

📍 자료 수정

String usql = "update sangdata set sang = '감자깡', su = 33 where code = 5";
		 stmt.executeUpdate(usql);
            String usql = "update sangdata set sang = '감자깡', su = 33 where code = 5";
		    int upResult = stmt.executeUpdate(usql); // 수정 행 수 결과 반환
		    if(upResult>0) {
		    	System.out.println("수정 성공");
		    }else {
		    	System.out.println("수정 실패");
		    }

📍 자료 삭제

	String dsql = "delete from sangdata where code >= 5";
		    int delResult = stmt.executeUpdate(dsql); 
		    System.out.println("delResult : "+delResult);
		    if(delResult>0) {
		    	System.out.println("삭제 성공");
		    }else {
		    	System.out.println("삭제 실패");
		    }

자료 수정과 삭제에서 행 수 결과 반환은 선택사항이다. 이것이 자료 추가, 수정, 삭제하는 문법이며 저번 포스팅의 java와 DB연결과 읽기 소스코드는 그대로 쓰고 자료를 추가, 수정, 삭제하고 싶을 때 이 문법을 사용하면 된다.

📌 활용

package pack5db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DbTest2 {
	private Connection conn;
	private Statement stmt;
	private ResultSet rs;
	
	public DbTest2() {
		dbloading();
		accessDb();
	}
	private void dbloading() {
		
		try {
			Class.forName("org.mariadb.jdbc.Driver");
		} catch (Exception e) {
			System.out.println("로딩 실패 :" +e);
			System.exit(0);
		}
	}
	private void accessDb() {
		try {
			conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/test","root","비밀번호");
			stmt = conn.createStatement();
			
			// 자료 추가 -- autocommit이 기본
			// String isql = "insert into sangdata values (5, '새우깡' ,5 ,1500)";
			// stmt.executeUpdate(isql); // select를 제외한 sql문을 적을 수 있다.
			
			// String isql = "insert into sangdata values (6, '콘칩' ,5 ,2500)";
			// int result = stmt.executeUpdate(isql); // insert 경과 반환 /반환은 0(실패) or 1(성공)
			// System.out.println("result : "+result);

			// 자료 수정
			// String usql = "update sangdata set sang = '감자깡', su = 33 where code = 5";
			// stmt.executeUpdate(usql);
			/*
		    String usql = "update sangdata set sang = '감자깡', su = 33 where code = 5";
		    int upResult = stmt.executeUpdate(usql); // 수정 행 수 결과 반환
		    if(upResult>0) {
		    	System.out.println("수정 성공");
		    }else {
		    	System.out.println("수정 실패");
		    }
		    */
			
			// 자료삭제
			String dsql = "delete from sangdata where code >= 5";
		    int delResult = stmt.executeUpdate(dsql); 
		    System.out.println("delResult : "+delResult);
		    if(delResult>0) {
		    	System.out.println("삭제 성공");
		    }else {
		    	System.out.println("삭제 실패");
		    }
			
			
			
			
			// 모든 자료 읽기
			rs = stmt.executeQuery("select * from sangdata");
			int cou = 0;
			while(rs.next()) {
				System.out.println(rs.getString("code") + " " +
									rs.getString("sang") + " " +
									rs.getString("su") + " " +
									rs.getString("dan") + " ");
				cou ++;
			}
			System.out.println("전체 건수 : "+cou);
			
		} catch (Exception e) {
			
		}finally {
			try {
				if(rs != null) rs.close();
				if(stmt != null) stmt.close();
				if(conn != null) conn.close();
			} catch (Exception e) {
			
			}
		}
		
	}
	public static void main(String[] args) {
		new DbTest2();

	}

}
post-custom-banner

0개의 댓글