Article n° 24

En ligne: 8 mai 2010
Modifié le: 8 mai 2010
Popularité: 13
Nb visites: 5948

mots clés

Java , langages , SGBD

Java

Se connecter à une base de données via JDBC

Par: Chris

Il est courant aujourd’hui d’avoir à développer des applications bases de données relationnelles. En java c’est l’API et les drivers JDBC qui fournissent les fonctionnalités permettant de se connecter et d’exécuter des requêtes SQL sur une base de données. L’intérêt de cette API est de fournir une méthodes d’accès standard quelque soit le SGBD utilisé.

 6. Exécuter des requêtes

Récupérer un objet Statement

Maintenant que nous sommes connecté à la base de données nous devons récupérer un objet Statement qui nous permettra d’exécuter toutes requêtes SQL sur la base de données. A partir d’un objet Connection vous pourrez utiliser la méthode suivante :

Statement createStatement()

Exemple :

Connection con = …
...
Statement st = conn.createStatement();

Lancer l’exécution de requêtes

Cette classe dispose de plusieurs méthodes permettant d’exécuter des requêtes SQL. Vous utiliserez plutôt l’une ou l’autre selon le type de requête. Voici la liste de ces différentes méthodes :

ResultSet executeQuery( String sql )

Exécute une requête de sélection (SELECT) et renvoi une liste d’enregistrements dans un objet ResultSet.

int executeUpdate( String sql )

Exécute une requête de mise à jour (INSERT, UPDATE ou DELETE) ou une commande SQL de type DLL comme par exemple CREATE TABLE. Cette méthode renvoi le nombre d’enregistrements modifiés lorsqu’il s’agit d’une requête de mise à jour sinon -1.

boolean execute( String sql )

Permet d’exécuter une requête SQL quelconque. Retourne la valeur true si l’exécution de la requête renvoi un ensemble résultat sinon false.

Si la méthode execute renvoi true, vous devrez pouvoir exploiter les résultats avec les 2 méthodes suivante :

int getUpdateCount()

qui renvoi le nombre d’enregistrements disponibles ou -1 si la méthode execute ne renvoie pas d’ensembles résultats et :

ResultSet getResultSet()

qui permet de récupérer l’ensemble résultat.

Récupérer les données de la requête

Un objet ResultSet contient l’ensemble de données résultant d’une requête sélection.

Cette classe dispose des méthodes suivante pour vous permettre d’exploiter les données retournées

boolean next()

Avance d’une ligne dans le ResultSet et renvoi true tant que vous n’êtes pas sur la dernière ligne. Vous devrez appeler une première fois cette méthode pour pouvoir récupérer la première ligne.

void close()

Ferme l’ensemble résultat.

Pour balayer l’ensemble des lignes vous pourrez créer une boucle de ce type :

Pour récupérer les informations, vous disposez d’une série de méthodes get.. auxquelles vous passerez en paramètre soit le nom du champ soit son numéro d’ordre (commence par 1). Il existe une version de ces méthodes pour chaque type de données courantes d’une base de données permettant de retourner la valeur dans un type Java compatible.

Les noms de ces méthodes auront la forme suivante :

typeJava getTypeJava( int columnNumber )
typeJava getTypeJava( String columnName )

Le tableau suivant présente la correspondance entre quelques types SQL et Java avec le nom de la méthode get correspondantes

Type java
boolean getBooelan(...) BIT
byte getByte(...) TINYINT
short getShort SMALLINT
int getInt INTEGER
long getLong BIGINT
float getFloat REAL
double getDouble FLOAT, DOUBLE
BigDecimal getBigDecimal DECIMAL, NUMERIC
String getString CHAR, VARCHAR
java.sql.Date getDate DATE
Time getTime TIME
Timestamp getTimestamp TIMESTAMP
...

Exemple de programme affichant le résultat d’une requête

Le programme reprend l’exemple précédent mais saisie dans Eclipse et en ajoutant l’affichage du contenu de la table. La méthode de connexion a également été modifiée pour lire les paramètres à partir d’un fichier properties.

Le fichier database.properties a la structure suivante :

Remarque : La ligne #url est en commentaire pour montrer la différence de syntaxe entre un système MS-Windows et Unix.

SPIP |