문 소개

모든 SQL 쿼리는 조건부로 두 그룹으로 나눌 수 있습니다.

  • 데이터 검색 - 여기에는 SELECT 문이 포함됩니다 .
  • 데이터 수정 - 여기에는 INSERT , UPDATEDELETE 문이 포함됩니다 .

첫 번째 그룹의 경우 우리에게 이미 친숙한 Statement 인터페이스 메서드인 executeQuery () 가 사용됩니다 . 원칙적으로 이 방법은 시작하기에 충분합니다. 실제 작업에서 사용해야 하는 매우 많은 비율의 쿼리를 다룹니다.

나중에 더 많은 옵션을 다루겠지만 지금은 테이블에서 데이터를 가져오려는 경우 대부분의 경우 executeQuery() 메서드가 올바른 선택 임을 기억하는 것이 좋습니다 .

두 번째 요청 그룹의 경우 Statement 인터페이스의 다른 메서드인 executeUpdate() 를 사용해야 합니다 . ResultSet을 반환하는 executeQuery() 메서드 와 달리 이 메서드 는 쿼리가 실행될 때 변경된 테이블의 행 수를 알려주는 정수를 반환합니다 .

예를 들어 DELETE FROM employee 문으로 모든 행을 삭제할 수 있습니다(매우 주의해야 함). 이 경우 executeUpdate() 메서드는 삭제된 행 수를 반환합니다. 경우에 따라 변경된 행 수를 아는 것이 데이터 작업을 위한 알고리즘을 구축하는 데 유용할 수 있습니다.

원칙적으로 우리는이 질문을 끝낼 수 있습니다. 우리는 이미 중요한 것을 보았습니다. 데이터 가져오기의 경우 - executeQuery() . 데이터를 변경하려면 - executeUpdate() .

executeQuery() 메서드를 사용하여 사용자 테이블 의 사용자 수를 가져옵니다 .


	ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
	results.next();
    int count = results.getInt(1);

실행업데이트()

executeUpdate() 메서드는 쿼리가 테이블에서 무언가를 변경할 때 사용됩니다. 무엇이든 될 수 있습니다.

  • 업데이트
  • INSERT
  • DELETE
  • CALL PROCEDURE

이 메서드는 변경된(또는 삭제된) 행 수를 반환합니다.

모든 직원의 급여를 1000 루블 인상하는 요청을 작성합시다.


   int rowsCount = statement.executeUpdate("UPDATE  employee SET salary = salary+1000");

이 코드를 실행한 후 내 테이블에 숫자 6이 반환되었습니다. 내 테이블에는 6개의 행이 있습니다. 그래서 모든 라인이 변경되었습니다.

실행하다()

때로는 실행해야 하는 요청(선택 또는 데이터 변경)을 정확히 알지 못하는 상황이 발생할 수 있습니다. 이 경우 JDBC 작성자는 다른 일반 메서드인 execute() 를 추가했습니다 .

이 메소드는 executeQuery()executeUpdate() 메소드 대신 사용할 수 있습니다 . 이러한 방법이 어떻게 다른지 기억하십니까? 오른쪽. 결과 유형. 따라서 JDBC 제작자는 이러한 솔루션을 내놓았습니다.

execute() 메서드는 부울을 반환합니다. 이 값이 true 이면 데이터 가져오기 요청이 진행 중이며 데이터를 가져오려면 getResultSet() 메서드를 호출해야 합니다. 예:


    boolean hasResults = statement.execute("SELECT Count(*) FROM user");
    if ( hasResults ) {
        	ResultSet results =  statement.getResultSet();
        	results.next();
        	int count = results.getInt(1);
 	}

이 값이 false 이면 데이터 변경 요청이 진행 중이며 변경된 행 수를 가져오려면 getUpdateCount() 메서드를 호출해야 합니다. 예:


    boolean hasResults = statement.execute("UPDATE  employee SET salary = salary+1000");
    if ( !hasResults ) {
      	int count = statement.getUpdateCount();
 	}

쿼리 결과를 표시하는 메서드를 작성해 보겠습니다.


	public void executeAndPrintSQLQuery(String sqlQuery) {
 
        boolean hasResults = statement.execute(sqlQuery);
        if ( hasResults ) {
 	          ResultSet results =  statement.getResultSet();
           	System.out.println(“Your request lines below:);
 
           	while (results.next()) {
 	                 Integer id = results.getInt(1);
     	             String name = results.getString(2);
                      System.out.println(results.getRow() + ". " + id + "\t"+ name);
  	        }
       }
 	  else {
            int count = statement.getUpdateCount();
        	System.out.println(“Number of name strings:+ count);
  	}
}

이것이 execute() 메서드가 일반적으로 실제로 사용되는 방식입니다.