English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
As instruções SQL que leem dados de uma consulta de banco de dados retornam os dados do conjunto de resultados. A instrução SELECT é o método padrão para escolher linhas do banco de dados e vê-las no conjunto de resultados. A interface Sql.ResultSet representa o conjunto de resultados da consulta de banco de dados.
O objeto ResultSet mantém um cursor apontando para a linha atual do conjunto de resultados. O termo 'conjunto de resultados (result set)' se refere às linhas e colunas de dados contidas no objeto ResultSet.
Os métodos do ResultSet podem ser divididos em três categorias-
Métodos de navegação: Usado para mover o cursor para a esquerda e para a direita.
Método Get: Usado para visualizar os dados das colunas da linha atual apontada pelo cursor.
Método de atualização:Usado para atualizar os dados de cada coluna da linha atual. Em seguida, a atualização também pode ser feita no banco de dados básico.
O cursor pode se mover com base nas propriedades do ResultSet. Essas propriedades são especificadas ao criar o Statement correspondente que gera o ResultSet.
O JDBC fornece os seguintes métodos de conexão para criar instruções com o conjunto de resultados desejado-
createStatement(int RSType, int RSConcurrency);
prepareStatement(String SQL, int RSType, int RSConcurrency);
prepareCall(String sql, int RSType, int RSConcurrency);
O primeiro parâmetro representa o tipo do objeto ResultSet, o segundo parâmetro é uma das constantes ResultSet, usada para especificar se o conjunto de resultados é apenas leitura ou atualizável.
Os tipos possíveis de RSType estão conforme mostrado a seguir. Se você não especificar nenhum tipo de ResultSet, você obterá automaticamente um conjunto de resultados do tipo TYPE_FORWARD_ONLY.
Tipo | Description |
---|---|
ResultSet.TYPE_FORWARD_ONLY | O cursor pode se mover apenas para frente no conjunto de resultados. |
ResultSet.TYPE_SCROLL_INSENSITIVE | O cursor pode ser rolado para frente e para trás e o conjunto de resultados não é sensível às alterações feitas no banco de dados por outras pessoas após a criação do conjunto de resultados. |
ResultSet.TYPE_SCROLL_SENSITIVE. | The cursor can scroll forward and backward, and the result set is very sensitive to changes made to the database by others after the result set was created. |
Possible RSConcurrency is given below. If you do not specify any concurrency type, you will automatically obtain the CONCUR_READ_ONLY type.
Concurrency | Description |
---|---|
ResultSet.CONCUR_READ_ONLY | Create a read-only result set. This is the default value |
ResultSet.CONCUR_UPDATABLE | Create an updatable result set. |
So far, all the examples we have written can be written as follows, which initializes a Statement object to create a read-only ResultSet object-
try { Statement stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); } catch(Exception ex) { .... } finally { .... }
There are several methods involving cursor movement in the ResultSet interface, including-
Número | Métodos e Descrições |
---|---|
1 | public void beforeFirst() throws SQLException Move the cursor to the row before the first row. |
2 | public void afterLast() throws SQLException Move the cursor to the row after the last row. |
3 | public boolean first() throws SQLException Move the cursor to the first row. |
4 | public void last() throws SQLException Move the cursor to the last row. |
5 | public boolean absolute(int row) throws SQLException Move the cursor to the specified row. |
6 | public boolean relative(int row) throws SQLException Move the cursor forward or backward by the specified number of rows from its current position. |
7 | public boolean previous() throws SQLException Move the cursor to the previous row. If the previous row is not in the result set, this method returns false. |
8 | public boolean next() throws SQLException Move o cursor para a próxima linha. Se não houver mais linhas no conjunto de resultados, este método retorna false. |
9 | public int getRow() throws SQLException Retorna o número da linha apontada pelo cursor. |
10 | public void moveToInsertRow() throws SQLException Move o cursor para a linha especial no conjunto de resultados, que pode ser usada para inserir uma nova linha no banco de dados. Lembre-se da posição atual do cursor. |
11 | public void moveToCurrentRow() throws SQLException Se o cursor estiver atualmente na linha de inserção, move o cursor de volta para a linha atual; caso contrário, este método não executa nenhuma ação |
Para entender melhor, vamos estudar “Navegação-Código de Exemplo.
A interface ResultSet contém muitos métodos para obter os dados da linha atual
Cada tipo de dados possível tem um método get, cada método get tem duas versões-
Coluna com nome de coluna
Índice com índice de coluna
Por exemplo, se o campo de interesse para ver a coluna contiver um int, você precisará usar um dos métodos getInt() do ResultSet
Número | Métodos e Descrições |
---|---|
1 | public int getInt(String columnName) throws SQLException Retorna o inteiro na linha atual da coluna nomeada columnName. |
2 | public int getInt(int columnIndex) throws SQLException Retorna o número inteiro na linha atual da coluna de índice especificada. O índice de coluna começa de1Começando, isso significa que a primeira coluna da linha é1e a segunda coluna da linha é2e assim por diante. |
Da mesma forma, na interface ResultSet, para cada um dos oito tipos básicos Java e os tipos comuns (como java.lang.String, java.lang.Object e java.net.URL), há um método get.
Existem alguns métodos para obter os tipos de dados SQL java.sql.Date, java.sql.Time, java.sql.Timestamp, java.sql.Clob e java.sql.Blob. Consulte o documento para obter mais informações sobre o uso desses tipos de dados SQL.
Para entender melhor, vamos estudarVer-Exemplo de Código.
A interface ResultSet contém uma coleção de métodos de atualização usados para atualizar os dados do conjunto de resultados
Como no método get, cada tipo de dados tem dois métodos de atualização-
Coluna com nome de coluna
Índice com índice de coluna
Por exemplo, para atualizar a coluna String da linha atual do conjunto de resultados, você pode usar um dos métodos updateString() abaixo-
Número | Métodos e Descrições |
---|---|
1 | public void updateString(int columnIndex, String s) throws SQLException Mudar o valor da String na coluna especificada para o valor de s. |
2 | public void updateString(String columnName, String s) throws SQLException Similar aos métodos anteriores, apenas as colunas são especificadas pelo nome em vez de pelo índice. |
O pacote java.sql contém oito tipos de dados originais e métodos de atualização para String, Object, URL e tipos de dados SQL.
Atualizar uma linha no conjunto de resultados mudará as colunas da linha atual no objeto ResultSet, mas não a linha no banco de dados básico. Para atualizar as alterações na linha do banco de dados, você precisa chamar um dos seguintes métodos.
Número | Métodos e Descrições |
---|---|
1 | public void updateRow() Atualizar a linha atual atualizando a linha correspondente no banco de dados. |
2 | public void deleteRow() Excluir a linha atual do banco de dados. |
3 | public void refreshRow() Atualizar os dados no conjunto de resultados para refletir as alterações mais recentes no banco de dados. |
4 | public void cancelRowUpdates() Cancelar qualquer atualização feita na linha atual. |
5 | public void insertRow() Inserir uma linha no banco de dados. Este método pode ser chamado apenas quando o cursor estiver apontando para a linha de inserção. |
Para entender melhor, vamos estudar “Atualizar Código de Exemplo.