ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JDBC - CRUD INSERT, UPDATE, DELETE
    servlet/JDBC 2022. 2. 4. 01:31
    728x90
    반응형

     

     

     

     

     

     

     

     우선 쿼리문을 xml 파일에 작성

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
    	<entry key="insertMenu">
    		INSERT
    		  INTO TBL_MENU A
    		(
    		  A.MENU_CODE
    		, A.MENU_NAME
    		, A.MENU_PRICE
    		, A.CATEGORY_CODE
    		, A.ORDERABLE_STATUS
    		)
    		VALUES
    		(
    		  SEQ_MENU_CODE.NEXTVAL
    		, ?
    		, ?
    		, ?
    		, ?
    		)
    	</entry>
    	<entry key="updateMenu">
    		UPDATE
    		       TBL_MENU A
    		   SET A.MENU_NAME = ?
    		     , A.MENU_PRICE = ?
    		 WHERE A.MENU_CODE = ?
    	</entry>
    	<entry key="deleteMenu">
    		DELETE
    		  FROM TBL_MENU A
    		 WHERE A.MENU_CODE = ?
    	</entry>
    </properties>

     

     

     참고
    SELECT 수행 시에는 결과 값 ResultSet 인터페이스를 사용했지만 
    insert/update/delete에서는 ResultSet 은 필요가 없다

     

     

    INSERT, UPDATE, DELETE

     쿼리문만 달라지고 하는 방법은 같으므로 INSERT만 구현해보자

     

    Properties prop = new Properties();
    • xml 파일을 가져오기 위해 Properties 객체 생성

     

    prop.loadFromXML(new FileInputStream("mapper/menu-query.xml"));
    • xml파일 로드

     

    String query = prop.getProperty("insertMenu");
    • 수행할 쿼리를 xml파일의 key값을 이용하여 해당 쿼리를 가져온다

     

    pstmt = con.prepareStatement(query);
    • Connection인스턴스의 prepareStatement 메서드를 이용하여 PreparedStatement 객체 생성

     

    pstmt.setString(1, "봉골레청국장");
    pstmt.setInt(2, 50000);
    pstmt.setInt(3, 4);
    pstmt.setString(4, "Y");
    • 해당 쿼리의 위치홀더에 데이터 바인딩

     

    result = pstmt.executeUpdate();
    • 해당 쿼리를 수행한 결과 값 반환(수행 시 결과 값 삽입/수정/삭제 된 행의 개수 (int) 반환)

    • SELECT는 executeQuery() 메서드 사용,
      INSERT/UPDATE/DELETE는 executeUpdate() 메서드를 사용한다.

     

     

    전체 코드

    public class Application1 {
    
    	public static void main(String[] args) {
    		
    		Connection con = getConnection();
    		
    		PreparedStatement pstmt = null;
    		/* SELECT 수행 시 결과 값 ResultSet 객체
    		 * INSERT/UPDATE/DELTE 수행 시 결과 값 삽입/수정/삭제 된 행의 개수 (int) 
    		 * */
    		int result = 0;
    		
    		Properties prop = new Properties();
    		
    		try {
    			prop.loadFromXML(new FileInputStream("mapper/menu-query.xml"));
    			String query = prop.getProperty("insertMenu");
    			System.out.println(query);
    			
    			pstmt = con.prepareStatement(query);
    			pstmt.setString(1, "봉골레청국장");
    			pstmt.setInt(2, 50000);
    			pstmt.setInt(3, 4);
    			pstmt.setString(4, "Y");
    			
    			/* select시 executeQuery()
    			 * insert/update/delete시 executeUpdate()
    			 * */
    			result = pstmt.executeUpdate();
    			
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally {
    			close(pstmt);
    			close(con);
    		}
    		
    		System.out.println("result : " + result);
    
    	}
    
    }

     

    728x90
    반응형

    'servlet > JDBC' 카테고리의 다른 글

    JDBC - PreparedStatement 사용  (0) 2022.02.04
    JDBC - Statement 사용  (0) 2022.02.03
    Oracle JDBC 사용 방법  (0) 2022.02.03
    JDBC 10 - 최종 결과물  (0) 2021.12.03
    JDBC 9 - 사용자 인터페이스 붙이기(공지사항 목록)  (0) 2021.12.02

    댓글

Designed by Tistory.