Java - Les fondamentaux : cours et exercices.

Interroger une base de données.

  • Ce chapitre demande des connaissances en bases de données et SQL.

  • Mais il est relativement simple et peu permettre d'en voir l'intérêt.

Resultset : jeu d'enregistrements.

Nous allons afficher tous les enregistrements d'une table grâce au Resulset.

  • Faire une classe "AfficheTable" avec un "main".

  • Modifier le code comme ceci :

Remarque

Les metadatas (ou, plus communément, les métadonnées) constituent en réalité un ensemble de données servant à décrire une structure.

Dans notre cas, elles permettent de connaître le nom des tables, des champs, leur type...

Remarque

On peut atteindre chaque colonne par :

System.out.print(result.getInt("idVoiture")");

System.out.print(result.getString("Nom")");

Il existe une méthode getXXX() par type primitif ainsi que quelques autres correspondant aux types SQL :

getArray(int colummnIndex) ;

getAscii(int colummnIndex) ;

getBigDecimal(int colummnIndex) ;

getBinary(int colummnIndex) ;

getBlob(int colummnIndex) ;

getBoolean(int colummnIndex) ;

getBytes(int colummnIndex) ;

getCharacter(int colummnIndex) ;

getDate(int colummnIndex) ;

getDouble(int colummnIndex) ;

getFloat(int colummnIndex) ;

getInt(int colummnIndex) ;

getLong(int colummnIndex) ;

getObject(int colummnIndex) ;

getString(int colummnIndex).

ExemplePetit exercice.

Nous voulons obtenir cela :

---

Non, non, non, on ne regarde pas tout de suite le résultat !

Mais voilà une solution au cas où :

Code :

AfficheChamps

RemarqueStatement.

On peut passer des paramètres lors de la création du "Statement".

Les paramètres jouent sur le parcours des enregistrements.

--

Premier paramètre :

  • TYPE_FORWARD_ONLY : le résultat n'est consultable qu'en avançant dans les données renvoyées, il est donc impossible de revenir en arrière lors de la lecture.

  • TYPE_SCROLL_SENSITIVE : le parcours peut se faire vers l'avant ou vers l'arrière et le curseur peut se positionner n'importe où, mais si des changements surviennent dans la base pendant la lecture, il ne seront pas visibles.

  • TYPE_SCROLL_INSENSITIVE : à la différence du précédent, les changements sont directement visibles lors du parcours des résultats.

Second paramètre :

  • CONCUR_READONLY : les données sont consultables en lecture seule, c'est-à-dire que l'on ne peut modifier des valeurs pour mettre la base à jour.

  • CONCUR_UPDATABLE : les données sont modifiables, lors d'une modification, la base est mise à jour.

--

Par défaut, les ResultSet issus d'un Statement sont de type TYPE_FORWARD_ONLY pour le parcours et CONCUR_READONLY pour les actions réalisables.

Statement state = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

RemarqueDéplacement dans le résulset :

  • vous positionner avant la première ligne de votre résultat : res.beforeFirst().

  • savoir si vous vous trouvez avant la première ligne : res.isBeforeFirst().

  • vous placer sur la première ligne de votre résultat : res.first().

  • savoir si vous vous trouvez sur la première ligne : res.isFirst().

  • vous retrouver sur la dernière ligne : res.last().

  • savoir si vous vous trouvez sur la dernière ligne : res.isLast().

  • vous positionner après la dernière ligne de résultat : res.afterLast().

  • savoir si vous vous trouvez après la dernière ligne : res.isAfterLast().

  • aller de la première ligne à la dernière : res.next() ;

  • aller de la dernière ligne à la première : res.previous().

  • vous positionner sur une ligne précise de votre résultat : res.absolute(5).

  • vous positionner sur une ligne par rapport à votre emplacement actuel : res.relative(-3).

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimerRéalisé avec Scenari (nouvelle fenêtre)