English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Las sentencias SQL que leen datos de la consulta de base de datos devuelven los datos del conjunto de resultados. La sentencia SELECT es el método estándar para seleccionar filas de la base de datos y verlas en el conjunto de resultados. El interfaz Sql.ResultSet representa el conjunto de resultados de la consulta de base de datos.
El objeto ResultSet mantiene un cursor apuntando a la fila actual del conjunto de resultados. El término "conjunto de resultados (result set)" se refiere a las filas y columnas de datos que contiene el objeto ResultSet.
Los métodos del interfaz ResultSet se pueden dividir en tres categorías-
Métodos de navegación: Se utiliza para mover el cursor a la izquierda y a la derecha.
Método Get: Se utiliza para ver los datos de las columnas de la fila actual apuntada por el cursor.
Método Update:Se utiliza para actualizar los datos de cada columna de la fila actual. Luego, la actualización también se puede realizar en la base de datos base.
El cursor puede moverse según las propiedades del ResultSet. Estas propiedades se especifican al crear el Statement correspondiente que genera el ResultSet.
JDBC proporciona los siguientes métodos de conexión para crear sentencias con el ResultSet requerido-
createStatement(int RSType, int RSConcurrency);
prepareStatement(String SQL, int RSType, int RSConcurrency);
prepareCall(String sql, int RSType, int RSConcurrency);
El primer parámetro representa el tipo del objeto ResultSet, el segundo parámetro es una de las constantes ResultSet, que se utiliza para especificar si el conjunto de resultados es de solo lectura o actualizable.
Los posibles RSType se muestran a continuación. Si no especifica ningún tipo de ResultSet, obtendrá automáticamente un conjunto de resultados de tipo TYPE_FORWARD_ONLY.
Tipo | Descripción |
---|---|
ResultSet.TYPE_FORWARD_ONLY | El cursor solo puede moverse hacia adelante en el conjunto de resultados. |
ResultSet.TYPE_SCROLL_INSENSITIVE | El cursor puede desplazarse hacia adelante y hacia atrás, y el conjunto de resultados no es sensible a los cambios realizados en la base de datos por otras personas después de crear el conjunto de resultados. |
ResultSet.TYPE_SCROLL_SENSITIVE. | El cursor puede desplazarse hacia adelante y hacia atrás, y el conjunto de resultados es muy sensible a los cambios realizados por otros en la base de datos después de crear el conjunto de resultados. |
Las posibles RSConcurrency se indican a continuación. Si no especifica ningún tipo de concurrencia, se obtendrá automáticamente el tipo CONCUR_READ_ONLY.
Concurrencia | Descripción |
---|---|
ResultSet.CONCUR_READ_ONLY | Crear un conjunto de resultados de solo lectura. Este es el valor predeterminado |
ResultSet.CONCUR_UPDATABLE | Crear un conjunto de resultados actualizable. |
Hasta ahora, todos los ejemplos que hemos escrito se pueden escribir así, este ejemplo inicializa un objeto Statement para crear un objeto ResultSet de solo lectura-
try { Statement stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); } catch(Exception ex) { .... } finally { .... }
El interfaz ResultSet tiene varios métodos que involucran el movimiento del cursor, incluyendo-
Número | Métodos y descripciones |
---|---|
1 | public void beforeFirst() throws SQLException Mueve el cursor antes de la primera línea. |
2 | public void afterLast() throws SQLException Mueve el cursor después de la última línea. |
3 | public boolean first() throws SQLException Mueve el cursor a la primera línea. |
4 | public void last() throws SQLException Mueve el cursor a la última línea. |
5 | public boolean absolute(int row) throws SQLException Mueve el cursor a la línea especificada. |
6 | public boolean relative(int row) throws SQLException Mueve el cursor hacia adelante o hacia atrás por el número de filas especificado, desde su posición actual. |
7 | public boolean previous() throws SQLException Mueve el cursor a la línea anterior. Si la línea anterior no está en el conjunto de resultados, este método devuelve false. |
8 | public boolean next() throws SQLException Mueve el cursor a la siguiente fila. Si no hay más filas en el conjunto de resultados, este método devuelve false. |
9 | public int getRow() throws SQLException Devuelve el número de fila al que apunta el cursor. |
10 | public void moveToInsertRow() throws SQLException Mueve el cursor a una fila especial en el conjunto de resultados, que se puede usar para insertar una nueva fila en la base de datos. Recuerde la posición actual del cursor. |
11 | public void moveToCurrentRow() throws SQLException Si el cursor actual está en la fila de inserción, el cursor se mueve a la fila actual; de lo contrario, este método no realiza ninguna acción |
Para entender mejor, estudie lo siguiente:Navegación-Código de ejemplo.
La interfaz ResultSet contiene muchos métodos para obtener los datos de la fila actual.
Cada tipo de datos posible tiene un método get, y cada método get tiene dos versiones-
Columna con nombre de columna
Índice con índice de columna
Por ejemplo, si el columna de interés contiene un entero,则需要使用 ResultSet 的 getInt ()方法之一
Número | Métodos y descripciones |
---|---|
1 | public int getInt(String columnName) throws SQLException Devuelve el entero en la columna con el nombre columnName de la fila actual. |
2 | public int getInt(int columnIndex) throws SQLException Devuelve el número entero en la columna de índice especificada de la fila actual. El índice de columna comienza desde1Comenzando, lo que significa que la primera columna de la fila es1Y la segunda columna de la fila es2Y así sucesivamente. |
Del mismo modo, en la interfaz ResultSet, para cada uno de los ocho tipos de datos básicos de Java y los tipos comunes (como java.lang.String, java.lang.Object y java.net.URL), hay métodos get.
También hay métodos para obtener tipos de datos SQL java.sql.Date, java.sql.Time, java.sql.Timestamp, java.sql.Clob y java.sql.Blob. Consulte el documento para obtener más información sobre el uso de estos tipos de datos SQL.
Para entender mejor, estudiemosVer-Ejemplo de código.
La interfaz ResultSet contiene una colección de métodos de actualización para actualizar los datos del conjunto de resultados
Al igual que con el método get, cada tipo de datos tiene dos métodos de actualización-
Columna con nombre de columna
Índice con índice de columna
Por ejemplo, para actualizar la columna String de la fila actual del conjunto de resultados, se puede usar uno de los métodos updateString() siguientes-
Número | Métodos y descripciones |
---|---|
1 | public void updateString(int columnIndex, String s) throws SQLException Cambiar el valor de la columna String especificada a s. |
2 | public void updateString(String columnName, String s) throws SQLException Similar a los métodos anteriores, pero las columnas se especifican por nombre en lugar de por índice. |
El paquete java.sql contiene ocho tipos de datos originales y métodos de actualización para String, Object, URL y tipos de datos SQL.
Actualizar una fila en el conjunto de resultados cambiará las columnas de la fila actual del objeto ResultSet, pero no la fila base de datos. Para actualizar los cambios en la fila de la base de datos, debe llamar a uno de los siguientes métodos.
Número | Métodos y descripciones |
---|---|
1 | public void updateRow() Actualizar la fila actual actualizando la fila correspondiente en la base de datos. |
2 | public void deleteRow() Eliminar la fila actual de la base de datos. |
3 | public void refreshRow() Refrescar los datos del conjunto de resultados para reflejar cualquier cambio reciente en la base de datos. |
4 | public void cancelRowUpdates() Cancelar cualquier actualización realizada en la fila actual. |
5 | public void insertRow() Insertar una fila en la base de datos. Solamente se puede llamar a este método cuando el cursor apunta a la fila de inserción. |
Para entender mejor, estudie lo siguiente:Actualizar código de ejemplo.