문 소개
모든 SQL 쿼리는 조건부로 두 그룹으로 나눌 수 있습니다.
- 데이터 검색 - 여기에는 SELECT 문이 포함됩니다 .
- 데이터 수정 - 여기에는 INSERT , UPDATE 및 DELETE 문이 포함됩니다 .
첫 번째 그룹의 경우 우리에게 이미 친숙한 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() 메서드가 일반적으로 실제로 사용되는 방식입니다.
GO TO FULL VERSION