TSIG2 DA DAIGL S34 (également S35 et S36) Cours atelier n°2
- 3 -
Syntaxe générale pour la connexion :
Connection objetConnection =
DriverManager.getConnection(ChaîneDeConnexion,"NomUtilisateur","MotDePasse");
Remarques :
l’accès à une base Oracle dans un programme Java peut être effectué via un DSN
ODBC (on choisira bien sûr un pilote pour Oracle lors de la création du DSN). Mais
dans le cas d’Oracle, il faudra impérativement préciser le nom d’utilisateur et le mot
de passe dans l’instruction de connexion. Sur le serveur, il faut que le listener Oracle
soit lancé. Sur le client, il faudra avoir installé Net8 et le driver odbc pour Oracle
devra bien sûr être présent.
En cas d’échec de la connexion, c’est l’exception SQLException qui est levée. Il est
obligatoire d’intercepter cette exception ou bien de la renvoyer.
3 Le client-serveur de données
Quand la connexion est établie (si aucune exception n'a été interceptée) on peut écrire des
requêtes pour construire, interroger ou mettre à jour la base.
Plusieurs interfaces sont utilisées :
Statement : C'est une interface que l'application emploie pour transmettre des requêtes SQL à
la base.
ResultSet : un ResultSet sera créé lors de l’exécution d’une requête d’interrogation, c’est
l’ensemble des tuples du résultat de la requête, cet ensemble pourra bien sûr être manipulé.
En cas d’échec de l’une des méthodes permettant de travailler sur les données, c’est
l’exception SQLException qui est levée. Il est obligatoire d’intercepter cette exception ou
bien de la renvoyer. C'est l'exception SQLException qui est levée en cas d'erreur pour
chacune des opérations vues dans la suite de ce cours.
3.1 Interrogation de la base
3.1.1 Requête et curseur (ResultSet)
Il faut commencer par créer un Statement, il s’appuie sur la connexion créée précédemment :
Statement requete = conn.createStatement();
executeQuery exécute la requête et place le résultat dans un ResultSet. Cet objet (nommé
resultat dans l’exemple ci-dessous) permet d'accéder aux données du résultat de la requête :
ResultSet resultat = requete.executeQuery ("select empno, ename, sal, hiredate from emp");
Après la requête, le curseur est positionné juste avant la première ligne du résultat mais le 1er
enregistrement n’est pas accessible, il faut effectuer un next() comme par la suite pour
avancer d’enregistrement en enregistrement.