La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

JDBC (Complément de cours) IFT 3030

Présentations similaires


Présentation au sujet: "JDBC (Complément de cours) IFT 3030"— Transcription de la présentation:

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


Télécharger ppt "JDBC (Complément de cours) IFT 3030"

Présentations similaires


Annonces Google