English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
데이터베이스에서 데이터를 읽는 SQL 문장은 결과 집합에 대한 데이터를 반환합니다. SELECT 문은 데이터베이스에서 행을 선택하고 결과 집합에서 확인하는 표준 방법입니다. Sql.ResultSet 인터페이스는 데이터베이스 쿼리의 결과 집합을 나타냅니다.
ResultSet 객체는 결과 집합 중 현재 행을 가리키는 커서를 유지합니다. '결과 집합(result set)'라는 용어는 ResultSet 객체에 포함된 행과 열 데이터를 의미합니다.
ResultSet 인터페이스의 메서드는 세 가지 유형으로 나눌 수 있습니다.-
탐색 메서드: 커서를 왼쪽과 오른쪽으로 이동하는 데 사용됩니다.
Get 메서드: 커서가 지시하는 현재 행의 열에 대한 데이터를 확인하는 데 사용됩니다.
Update 메서드:현재 행의 각 열에 대한 데이터를 업데이트하는 데 사용됩니다. 그런 다음, 업데이트는 기본 데이터베이스에서도 업데이트될 수 있습니다.
커서는 ResultSet의 속성에 따라 이동할 수 있습니다. 이 속성은 해당 ResultSet을 생성하는 Statement을 생성할 때 지정됩니다.
JDBC는 필요한 ResultSet을 가진 문장을 생성하기 위해 다음과 같은 연결 방법을 제공합니다.-
createStatement(int RSType, int RSConcurrency);
prepareStatement(String SQL, int RSType, int RSConcurrency);
prepareCall(String sql, int RSType, int RSConcurrency);
첫 번째 매개변수는 ResultSet 객체의 타입을 나타내며, 두 번째 매개변수는 ResultSet 상수 중 하나로, 결과 집합이 읽기 전용인지 갱신 가능인지를 지정합니다.
가능한 RSType는 다음과 같습니다. ResultSet 타입을 지정하지 않으면 자동으로 TYPE_FORWARD_ONLY 타입의 결과 집합을 얻습니다.
타입 | 설명 |
---|---|
ResultSet.TYPE_FORWARD_ONLY | 커서는 결과 집합에서만 앞으로 이동할 수 있습니다. |
ResultSet.TYPE_SCROLL_INSENSITIVE | 커서는 앞으로와 뒤로 스크롤할 수 있으며, 결과 집합은 다른 사람이 결과 집합을 생성한 후 데이터베이스에 대한 변경에 대한 취약하지 않습니다. |
ResultSet.TYPE_SCROLL_SENSITIVE. | 커서는 앞으로와 뒤로滚动할 수 있으며, 결과 집합은 다른 사람이 결과 집합을 생성한 후 데이터베이스에 대한 변경에 매우 민감합니다. |
가능한 RSConcurrency는 다음과 같습니다. 어떤 동기화 유형을 지정하지 않으면 자동으로 CONCUR_READ_ONLY 유형을 얻습니다.
동기화 | 설명 |
---|---|
ResultSet.CONCUR_READ_ONLY | 읽기 전용 결과 집합을 생성합니다. 기본 값입니다 |
ResultSet.CONCUR_UPDATABLE | 업데이트 가능한 결과 집합을 생성합니다. |
지금까지 우리가 작성한 모든 예제는 다음과 같이 작성할 수 있습니다. 이 예제는 읽기 전용 ResultSet 객체를 생성하기 위해 Statement 객체를 초기화합니다.-
try { Statement stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); } catch(Exception ex) { .... } finally { .... }
ResultSet 인터페이스에는 커서 이동에 관련된 여러 가지 메서드가 있습니다., 포함하여-
순번 | 메서드 및 설명 |
---|---|
1 | public void beforeFirst() throws SQLException 커서를 첫 번째 행 앞으로 이동합니다. |
2 | public void afterLast() throws SQLException 커서를 마지막 행 뒤로 이동합니다. |
3 | public boolean first() throws SQLException 커서를 첫 번째 행으로 이동합니다. |
4 | public void last() throws SQLException 커서를 마지막 행으로 이동합니다. |
5 | public boolean absolute(int row) throws SQLException 커서를 지정된 행으로 이동합니다. |
6 | public boolean relative(int row) throws SQLException 커서를 지정된 행 수만큼 앞으로 또는 뒤로 이동합니다. 현재 위치에서 이동합니다. |
7 | public boolean previous() throws SQLException 커서를 이전 행으로 이동합니다. 이전 행이 결과 집합에 없으면 이 메서드는 false를 반환합니다. |
8 | public boolean next() throws SQLException 커서를 다음 행으로 이동시킵니다. 결과 집합에 더 이상 행이 없으면 이 메서드는 false를 반환합니다. |
9 | public int getRow() throws SQLException 커서가 가리키는 행 번호를 반환합니다. |
10 | public void moveToInsertRow() throws SQLException 커서를 결과 집합의 특정 행으로 이동시킵니다. 이 행은 데이터베이스에 새 행을 삽입하는 데 사용할 수 있습니다. 현재 커서 위치를 기억하세요. |
11 | public void moveToCurrentRow() throws SQLException 커서가 현재 행에 위치한 경우, 커서를 현재 행으로 이동시킵니다; 그렇지 않으면 이 메서드는 어떤 작업도 수행하지 않습니다. |
이해하기 쉽게 하기 위해, 다음을 연구해 보겠습니다 "이동-예제 코드。
ResultSet 인터페이스는 현재 행 데이터를 가져오는 여러 가지 메서드를 포함하고 있습니다.
모든 가능한 데이터 타입에는 get 메서드가 있으며, 각 get 메서드에는 두 가지 버전이 있습니다.-
컬럼 이름을 가진 컬럼.
컬럼 인덱스를 가진 인덱스.
예를 들어, 관심 있는 열이 int를 포함하고 있다면, ResultSet의 getInt() 메서드 중 하나를 사용해야 합니다.
순번 | 메서드 및 설명 |
---|---|
1 | public int getInt(String columnName) throws SQLException 이름이 columnName인 컬럼에서 현재 행의 int 값을 반환합니다. |
2 | public int getInt(int columnIndex) throws SQLException 지정된 컬럼 인덱스에서 현재 행의 정수 값을 반환합니다. 컬럼 인덱스는1시작하면, 이는 행의 첫 번째 열이 됩니다.1그런 다음.2그런 다음. |
또한 ResultSet 인터페이스에서는, 여덟 가지 Java 기본 타입의 각 타입과 일반적인 타입(예: java.lang.String, java.lang.Object, java.net.URL)에 대해 get 메서드가 있습니다.
또한 java.sql.Date, java.sql.Time, java.sql.Timestamp, java.sql.Clob, java.sql.Blob와 같은 SQL 데이터 타입을 가져오는 메서드가 몇 가지 있습니다. 이러한 SQL 데이터 타입의 사용에 대한更多信息를 얻기 위해 문서를 확인하세요.
이해하기 위해, 다음을 연구해 보겠습니다.보기-예제 코드。
ResultSet 인터페이스는 결과 집합 데이터를 업데이트하는 메서드의 집합을 포함하고 있습니다.
get 메서드와 마찬가지로, 각 데이터 타입에는 두 가지 업데이트 메서드가 있습니다.-
컬럼 이름을 가진 컬럼.
컬럼 인덱스를 가진 인덱스.
예를 들어, 결과 집합의 현재 행의 String 열을 업데이트하려면 다음 updateString() 메서드 중 하나를 사용할 수 있습니다.-
순번 | 메서드 및 설명 |
---|---|
1 | public void updateString(int columnIndex, String s) throws SQLException 지정된 열의 String을 s의 값으로 변경합니다. |
2 | public void updateString(String columnName, String s) throws SQLException 이전 메서드와 유사하지만, 열은 인덱스 대신 이름을 통해 지정됩니다. |
java.sql 패키지에는 String, Object, URL 및 SQL 데이터 타입뿐만 아니라 8가지 원시 데이터 타입의 업데이트 메서드가 있습니다.
ResultSet에 일행을 업데이트하면 ResultSet 객체에서 현재 행의 열이 변경되지만, 기본 데이터베이스의 행은 변경되지 않습니다. 데이터베이스의 행에 대한 변경 사항을 업데이트하려면 다음 메서드 중 하나를 호출해야 합니다.
순번 | 메서드 및 설명 |
---|---|
1 | public void updateRow() 현재 행을 업데이트하여 데이터베이스에서 해당 행을 업데이트합니다. |
2 | public void deleteRow() 현재 행을 데이터베이스에서 제거합니다. |
3 | public void refreshRow() 최근에 데이터베이스에서 이루어진 모든 변경 사항을 반영하여 결과 집합의 데이터를 새로 고칩니다. |
4 | public void cancelRowUpdates() 현재 행에 대해 이루어진 모든 업데이트를 취소합니다. |
5 | public void insertRow() 데이터베이스에 한 행을 삽입합니다. 커서가 삽입 행을 가리키고 있을 때만 이 메서드를 호출할 수 있습니다. |
이해하기 쉽게 하기 위해, 다음을 연구해 보겠습니다 "예제 코드 업데이트。