English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Les instructions SQL pour lire des données à partir d'une requête de base de données renvoient les données du jeu de résultats. Les instructions SELECT sont la méthode standard pour sélectionner des lignes à partir de la base de données et les visualiser dans le jeu de résultats. L'interface Sql.ResultSet représente le jeu de résultats de la requête de base de données.
L'objet ResultSet maintient un curseur pointant vers la ligne actuelle du jeu de résultats. Le terme 'jeu de résultats (result set)' fait référence aux lignes et colonnes de données contenus dans l'objet ResultSet.
Les méthodes de l'interface ResultSet peuvent être divisées en trois catégories-
Méthodes de navigation: Utilisé pour déplacer le curseur vers la gauche ou vers la droite.
Méthode Get: Utilisé pour visualiser les données des colonnes de la ligne actuelle pointée par le curseur.
Méthode Update:Utilisé pour mettre à jour les données des différentes colonnes de la ligne actuelle. Ensuite, la mise à jour peut également être mise à jour dans la base de données sous-jacente.
Le curseur peut se déplacer en fonction des attributs ResultSet. Ces attributs sont spécifiés lors de la création de l'instruction Statement correspondante pour le ResultSet généré.
JDBC fournit les méthodes de connexion suivantes pour créer des instructions avec le ResultSet souhaité-
createStatement(int RSType, int RSConcurrency);
prepareStatement(String SQL, int RSType, int RSConcurrency);
prepareCall(String sql, int RSType, int RSConcurrency);
Le premier paramètre représente le type de l'objet ResultSet, le deuxième paramètre est l'une des constantes ResultSet, utilisée pour spécifier si le jeu de résultats est en lecture seule ou modifiable.
Les RSType possibles sont indiqués ci-dessous. Si vous ne spécifiez aucun type ResultSet, vous obtiendrez automatiquement un jeu de résultats de type TYPE_FORWARD_ONLY.
Type | Description |
---|---|
ResultSet.TYPE_FORWARD_ONLY | Le curseur ne peut se déplacer que vers l'avant dans le jeu de résultats. |
ResultSet.TYPE_SCROLL_INSENSITIVE | Le curseur peut être déplacé vers l'avant et vers l'arrière, et le jeu de résultats est insensible aux modifications apportées au base de données par d'autres personnes après la création du jeu de résultats. |
ResultSet.TYPE_SCROLL_SENSITIVE. | Le curseur peut faire défiler vers l'avant et vers l'arrière, et le jeu de résultats est très sensible aux modifications apportées au base de données par d'autres personnes après la création du jeu de résultats. |
Les types de concurrence possibles RSConcurrency sont indiqués ci-dessous. Si vous ne spécifiez aucun type de concurrence, vous obtiendrez automatiquement le type CONCUR_READ_ONLY.
Concurrence | Description |
---|---|
ResultSet.CONCUR_READ_ONLY | Créez un jeu de résultats en lecture seule. C'est la valeur par défaut |
ResultSet.CONCUR_UPDATABLE | Créez un jeu de résultats mis à jour. |
Jusqu'à présent, tous les exemples que nous avons écrits peuvent être rédigés comme suit, ce qui initialise un objet Statement pour créer un objet ResultSet en lecture seule-
try { Statement stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); } catch(Exception ex) { .... } finally { .... }
L'interface ResultSet contient plusieurs méthodes impliquant le déplacement du curseur, y compris-
Numéro | Méthode et description |
---|---|
1 | public void beforeFirst() throws SQLException Déplacez le curseur avant la première ligne. |
2 | public void afterLast() throws SQLException Déplacez le curseur après la dernière ligne. |
3 | public boolean first() throws SQLException Déplacez le curseur à la première ligne. |
4 | public void last() throws SQLException Déplacez le curseur à la dernière ligne. |
5 | public boolean absolute(int row) throws SQLException Déplacez le curseur à la ligne spécifiée. |
6 | public boolean relative(int row) throws SQLException Déplacez le curseur d'un certain nombre de lignes vers l'avant ou vers l'arrière à partir de la position actuelle du curseur. |
7 | public boolean previous() throws SQLException Déplacez le curseur à la ligne précédente. Si la ligne précédente n'est pas dans le jeu de résultats, cette méthode renvoie false. |
8 | public boolean next() throws SQLException Déplace le curseur à la ligne suivante. Si il n'y a plus de lignes dans le jeu de résultats, ce méthode retourne false. |
9 | public int getRow() throws SQLException Retourne le numéro de ligne pointé par le curseur. |
10 | public void moveToInsertRow() throws SQLException Déplace le curseur à la ligne spéciale du jeu de résultats, qui peut être utilisée pour insérer une nouvelle ligne dans la base de données. N'oubliez pas la position actuelle du curseur. |
11 | public void moveToCurrentRow() throws SQLException Si le curseur est actuellement à la ligne d'insertion, déplacez le curseur à la ligne actuelle; sinon, cette méthode ne fait aucune action |
Pour mieux comprendre, étudions "Navigation-Code d'exemple.
L'interface ResultSet contient de nombreuses méthodes pour obtenir les données de la ligne actuelle.
Chaque type de données possible a une méthode get, chaque méthode get a deux versions-
Colonne avec le nom de colonne
Index avec l'indice de colonne
Par exemple, si la colonne que vous intéressez contient un int, vous devez utiliser l'une des méthodes getInt() de ResultSet
Numéro | Méthode et description |
---|---|
1 | public int getInt(String columnName) throws SQLException Retourne l'entier actuel de la colonne nommée columnName. |
2 | public int getInt(int columnIndex) throws SQLException Retourne le nombre entier actuel de la colonne indexée dans la ligne actuelle. L'indice de colonne commence à1Début, ce qui signifie que la première colonne de la ligne est1et la deuxième colonne de la ligne est2et ainsi de suite. |
De même, dans l'interface ResultSet, pour chaque type de base Java des huit types de base, ainsi que pour les types courants (comme java.lang.String, java.lang.Object et java.net.URL), il y a une méthode get.
Il existe également des méthodes pour obtenir des types de données SQL java.sql.Date, java.sql.Time, java.sql.Timestamp, java.sql.Clob et java.sql.Blob. Consultez la documentation pour obtenir plus d'informations sur l'utilisation de ces types de données SQL.
Pour mieux comprendre, étudionsVoir-Exemple de code.
L'interface ResultSet contient une collection de méthodes de mise à jour pour mettre à jour les données du jeu de résultats
Comme pour la méthode get, chaque type de données a deux méthodes de mise à jour-
Colonne avec le nom de colonne
Index avec l'indice de colonne
Par exemple, pour mettre à jour la colonne String de la ligne actuelle du jeu de résultats, vous pouvez utiliser l'une des méthodes updateString() suivantes-
Numéro | Méthode et description |
---|---|
1 | public void updateString(int columnIndex, String s) throws SQLException Changer la valeur de la colonne String spécifiée en s. |
2 | public void updateString(String columnName, String s) throws SQLException Similaire aux méthodes précédentes, mais les colonnes sont spécifiées par leur nom plutôt que par leur index. |
Le paquet java.sql contient huit types de données primitives, ainsi que les méthodes de mise à jour pour String, Object, URL et types de données SQL.
Mettre à jour une ligne de l'ensemble de résultats modifie les colonnes de la ligne actuelle de l'objet ResultSet, mais ne modifie pas la ligne de base de données. Pour mettre à jour les modifications apportées à la ligne de la base de données, vous devez appeler l'une des méthodes suivantes.
Numéro | Méthode et description |
---|---|
1 | public void updateRow() Mettre à jour la ligne actuelle en mettant à jour la ligne correspondante dans la base de données. |
2 | public void deleteRow() Supprimer la ligne actuelle de la base de données. |
3 | public void refreshRow() Rafraîchir les données de l'ensemble de résultats pour refléter les changements récents dans la base de données. |
4 | public void cancelRowUpdates() Annuler toute mise à jour actuelle sur la ligne en cours. |
5 | public void insertRow() Insérer une ligne dans la base de données. Ce méthode ne peut être appelée que lorsque le curseur pointe sur la ligne à insérer. |
Pour mieux comprendre, étudions "Mise à jour du code d'exemple.