Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
JDBC (Complément de cours) IFT 3030 addamehd@iro.umontreal.ca
2
Objectifs de JDBC n n Permettre aux programmeurs java d’écrire un code indépendant de la base de données n n Fournir un ensemble de classes permettant l’utilisation locale ou distante d’un ou de plusieurs SGBDR à partir d’un programme java n n Interaction transparente entre le programme java et le SGBD
3
API JDBC n n Package : java.sql principale classes –DriverManager pour le chargement des pilotes permettant la connexion aux bases. –Connection qui prend en charge la connexion à une base de données particulière. –Statement qui permet d'exécuter des commandes sur la base. –PreparedStatement : requêtes dynamiques. –CallableStatement : procédures stockées. –ResultSet qui permet d'accéder aux résultats d'un SELECT.
4
Principe de base n n Une base (SGBDR) : un pilote JDBC – –Oracle : classes12.zip n n Modèle 2 ou 3 tiers
5
Architecture JDBC (rappel) n n Deux types de drivers JDBC en oracle: – –Thin driver: 100 % java – –OCI driver:Java & C
6
Fonctionnement n n Enregistrer le driver JDBC n n Établir la connexion à la base de données n n Formuler une requête n n Exécuter la requête n n Traiter les données retournées n n Fermer la connexion
7
Enregistrement du driver Class.forName("oracle.jdbc.driver.OracleDriver"); n n Une instance de cette classe est créée n n Enregistrement de l’instance au niveau du DriverManager n n Mais quelques fois : – –Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
8
Établir la connexion à la base n n Méthode : getConnection() de DriverManager avec 3 paramètres : – –URL de la base – –Nom utilisateur – –Mot de passe de l’utilisateur n n Exemple : – –String url = "jdbc:oracle:thin:@veles.iro.umontreal.ca:1521:a99"; – –Connection con = DriverManager.getConnection(url,"myLogin", "myPassword");
9
Formuler la requête n n Objet Statement est récupéré à partir de l’objet Connection (con) – –String request = "…"; – –Statement stmt = con.createStatement(); n n Exemple : – –String query = "select * from clients"; – –Statement stmt = con.createStatement();
10
Exécuter la requête (1/2) n n Faire appel à l’une des méthodes suivante de Statement : – –excuteQuery(query); – –executeUpdate(query);
11
Exécuter la requête (2/2) n n executeUpdate() : retourne le nombre de lignes affectées – –LDD : create, alter, drop – –LMD : insert, update, delete – –int i = stmt.executeUpdate(query); n n excuteQuery() : retourne un objet ResultSet – –LMD : select – –ResultSet rs = stmt.executeQuery(query);
12
Traitement des données retournées n n ResultSet : permet d’accéder aux champs des tuples retournés n n Il faut lire ‘mauellement’ les données et les stocker dans des variables selon les besoins n n Une boucle while pour parcourir les tuples n n Utiliser des méthodes de la forme : getXxx() – –Lire une colonne d’un type Xxx
13
- - Utiliser getString() si le type de la colonne est simple - - Utiliser getObject() pour des types composés… BLOB CLOB (fichier texte, fichier binaire ) - - La valeur NULL sql est convertit en la valeur correspondante en java - -getInt(), getByte() : 0 - -getString() : NULL - -getBoolean() : false getXxx()
14
Exemple complet String url = "jdbc:oracle:thin:@veles.iro.umontreal.ca:1521:a99"; Connection con = DriverManager.getConnection(url,"myLogin", "myPassword"); Statement stmt = con.createStatement(); String query = "select * from clients"; ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String clientLogin = rs.getString("login"); String clientName = rs.getString("nom"); System.out.println(" Login : " + clientLogin +" Nom : " + clientName); }
15
Parcours d’un ResultSet n n JDBC 1.xxx : Parcours itératif avec next() qui fait avancer le curseur n n Même pour le premier élément on exécute next()
16
Parcours d’un ResultSet (suite) n n >= JDBC 2 : Parcours itératif avec next() n n Déplacement absolu : absolute(int row), first(), last(),… n n Déplacement relatif : relative(int row),…
17
Fermeture de la connexion n n con.close(); n n Et aussi : n n stmt.close();
18
Correspondance de types Type jdbcType java CHAR, VARCHAR2, LONVARCHAR String NUMERIC, DECIMALBigDecimal BINARYbyte[] INTEGERint
19
Fonctionnalités avancées
20
Meta Data n n Un sgbd gère les informations concernant les tables de la base. – – ResultSetMetaData fournit des informations sur un objet ResultSet – –DatabaseMetaData procure des informations sur la base et le SGBD.
21
ResultSetMetaData n n getColumnCount() : nombre de colonnes dans le ResultSet n n getColumnClassName(int) : classe java correspondante au type de la colonne n n getColumnName(int) : nom de la colonne n n getTableName(int ) : nom de la table de la colonne n n …
22
DatabaseMetaData n n Méthode getMetaData() de la classe Connexion. n n Pour connaître : – –Les tables de la base : getTables() – –Les types du SGBD : getTypeInfo() – –…
23
Transactions n n Pour valider un ensemble de requêtes à la fois n n Par défaut : – – Mode auto-commit – –Validation de la transaction après chaque requête n n Pour passer au mode manuel : – –connexion.setAutoCommit(false) – –Pour valider : connexion.commit() – –Pour annuler : connexion.rollBack()
24
n n Linux : – – inclure jdk – –Modifier la variable d’environnement classepath dans le fichier : n n Dans le fichier.cshrc : setenv CLASSPATH "./u/login…/classes12.zip : $CLASSPATH" n n À partir de la console : export CLASSPATH=$CLASSPATH:.:/u/login/…/classes 12.zip Configuration
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.