JDBC Java Data Base Connectivity. Java DataBase Connectivity (JDBC) Cette API est développée par Sun en collaboration avec les grands éditeurs de SGBD.

Slides:



Advertisements
Présentations similaires
Présentation de frameworks J2EE
Advertisements

La programmation orientée objet avec Java L3-MIAGE Plan
Réaliser en Java un programme client d’une Base de Données
Introduction Fonctionnement PluginsConfigurationLes données Le framework MAG Framework de conception de canaux complexes Implémente IChannel Possède son.
Le mécanisme des exceptions
Introspection et Réflexion Manipulation dynamique de code Java.
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
(Classes prédéfinies – API Java)
51 Les technologies XML Cours 6 : XML et les architectures N-tiers – Tier Métier Janvier Version 1.0 -
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
Programmer en JAVA par Tama
Les Bases de données et le Web
Stéphane Frenot - Département Télécommunication - SID - II - Jdbc 280 JDBC Java Databases Connectivity.
PHP mySQL Extension php_mysql. Connexion à une base de données Établir une connexion mysql_connect(string server, string username, string password) –permet.
UV JDBC Module Java Expert
Programmation dapplications Bases de données avec Java INT.
Jérôme CUTRONA PHP PDO Jérôme CUTRONA 01:08:01 Programmation Web
JDBC: manipuler une base de données en Java IFT6800 – E 2007 Jian-Yun Nie.
Connexion base de données
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Principes de programmation (suite)
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA
HIBERNATE Framework de mapping objet-relationnel
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Le langage PHP 5.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
1 Développement des Applications des Bases de Données Chapitre 6.
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
JDBC ou comment manipuler une base de données en Java ?
Les instructions PHP pour l'accès à une base de données MySql
Principes de programmation (suite)
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
1 Développement des Applications des Bases de Données Chapitre 6.
1 CSI 2532 Lab5 Installation de JDBC Février 13, 2012.
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Développement des Applications des Bases de Données Chapitre 6.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
Juin 2006~ Brigitte Groléas ~ 1 J530 (JBD) Java : Base de Données.
Content Management System CMS. Pourquoi ? Obligation de ressaisir des contenus publiés à plusieurs endroits Pas d’outils de gestion de qualité de l’information.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
11/04/ L'héritage Cours 7 Cours 7.
Cours 7 Classes locales Clonage Divers: tableaux.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Créer des packages.
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.
 Requêtes MySQL en PHP Introduction
Tutorat en bio-informatique
Réaliser par: Sadok Amel Cheboui hassiba
Les sockets.
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
JDBC - p. 1 JDBC. JDBC - p. 2 Objectifs Fournir un accès homogène aux SGBDR Abstraction des SGBDR cibles Requêtes SQL Simple à mettre en oeuvre Core API.
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
Interface Java – Oracle : JDBC. I-2 JDBC (Java DataBase Connectivity) : interface API (Application Programming Interface) qui permet d’exécuter des ordres.
JDBC Présenter par: Mouctar Souleymane Bah Enseignent: Dr Amer Draâ
JDBC (Complément de cours) IFT 3030
Bases de données Singleton pour la connexion
JDBC - Y. Bekkers1 Java et les SGBDR Librairies JDBC Yves Bekkers.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Transcription de la présentation:

JDBC Java Data Base Connectivity

Java DataBase Connectivity (JDBC) Cette API est développée par Sun en collaboration avec les grands éditeurs de SGBD. Les tâches assurées par JDBC sont: Gestion des connexions et transactions Préparation de requêtes SQL Accès aisé aux résultats JDBC est une architecture bas niveau, qui est utilisée dans les applications J2EE pour assurer les fonctions de persistance des données. 2

Architecture dans Java EE

Les pilotes JDBC Il existe 4 types de pilote:

Etapes dutilisation de JDBC Création dune instance de pilote JDBC Définition de lURL de connexion Création dune connexion vers un SGBDR avec linstance du pilote Création dune ou +eurs instructions Exécution de la requête. Récupération et traitement des lignes du jeu de résultat Fermeture du jeu de résultat Fermeture et Déconnexion de la BD

Création dune instance de pilote JDBC import java.sql.*; public class ExempleJDBC{ public static void main(String[] Args) { try { Class.forName("com.mysql.jdbc.Driver"); } catch (Exception E) { System.err.println("Pas de pilote !"); }... connexion et utilisation de la base... }} L'appel à forName déclenche un chargement dynamique du pilote. Un programme peut utiliser plusieurs pilotes, un pour chaque base de données. Le pilote doit être accessible à partir de la variable d'environnement CLASSPATH.

Connexion à la BD try { String url = "jdbc:mysql://localhost/dbessai"; Connection conn = DriverManager.getConnection(url, "user", pw");... utilisation de la base... }catch (SQLException E) { System.err.println(E.getMessage()); }

Connexion BD MySql Les paramètres à connaitre pour formater URL de connexion JDBC / MySQL: Le nom de la machine ou s'exécute le SGBD MySQL : localhost (en local) ; le numéro de port sur lequel le SGBD est à l'écoute : 3306 le nom de la base de données à accéder : BdTest le login : root le mot de passe : [aucun] Ainsi : String url = "jdbc:mysql://localhost:3306/BdTest"; Connection con = DriverManager.getConnectio(url,"root","");

Exécution Instruction SQL Un objet Statement est ce que votre instruction SQL envoie vers le SGBD. Vous créerez simplement un objet Statement, Puis l'exécuterez, lui fournissant la méthode d'exécution appropriée avec l'instruction SQL que vous voulez envoyer. Pour une instruction SELECT, la méthode à utiliser est executeQuery. Pour les instructions visant à créer ou modifier des tables, la méthode est executeUpdate.

Les requêtes en JDBC Statement st = conn.createStatement(); ResultSet rs = st.executeQuery( "SELECT Nom,Prenom,Age FROM personne " + "ORDER BY age" ); while (rs.next()) { System.out.println("Nom : " + rs.getString(1)); System.out.println("Prénom : " + rs.getString(2)); System.out.println("Age : " + rs.getString(3)); } rs.close(); // Fermeture st.close(); conn.close();

Récupération/ Lecture Résultat JDBC renvoie les résultats dans un objet ResultSet, donc, nous avons besoin de déclarer une instance de la class ResultSet pour contenir nos résultats. Le code qui suit déclare l'objet ResultSet rs et lui assigne le résultat de notre requête : ResultSet rs = stmt.executeQuery("SELECT * FROM TABLE1"); La variable rs, qui est une instance de ResultSet, contient les lignes Pour pouvoir accéder aux champs, nous irons dans chaque ligne et récupèrerons les valeurs selon leur type La méthode next déplace le curseur à la ligne suivante La méthode getType (du type approprié) pour accéder à une valeur dans chaque colonne. Par exemple, si la colonne contient une valeur de type VARCHAR. La méthode est getString. Pour une colonne type SQL FLOAT la méthode pour accéder à ces valeurs est getFloat.

Récupération Résultat La classe java.sql.ResultSet Accès aux valeurs : Type getType( int ); Type getType( String ); boolean next(); Le Type peut être:

Correspondance des types Java / SQL SQLJava CHARString VARCHARString LONGVARCHARString NUMERICjava.math.BigDecimal DECIMALjava.math.BigDecimal BITboolean TINYINTbyte SMALLINTshort INTEGERint BIGINTlong REALfloat FLOATdouble DOUBLEdouble BINARYbyte[] VARBINARYbyte[] LONGVARBINARYbyte[]

Déplacement dans un « Result Set » rs.first(); rs.beforeFirst(); rs.next(); rs.previous(); rs.afterLast(); rs.absolute( n ); rs.relative( n );

Insertion de lignes Statement st = conn.createStatement(); int nb = st.executeUpdate( "INSERT INTO personne(Nom,Age) " + "VALUES ('" + nom + "', " + age + ")" ); System.out.println(nb + " ligne(s) insérée(s)"); st.close(); Ce principe est aussi utilisable pour les instructions UPDATE et DELETE.

Erreurs et warnings La classe java.sql.SQLException enrichit la classe java.lang.Exception: SQLState : description de l'erreur getNextException() La classe java.sql.SQLWarning enrichit la classe java.sql.SQLException: getWarnings() : Warning suivant (il réalise des appels répétés).

Gestion des transactions Le mode par défaut est « Auto Commit »: connexion.setAutoCommit(false); connexion.commit(); connexion.rollback();

Modification d'un « Result Set » Modification rs.updateString("Nom", Ben Salah"); rs.updateInt("Age", 24); rs.updateRow(); Destruction: rs.deleteRow();

Insertion de lignes: rs.moveToInsertRow(); rs.updateString("Nom", Ben Salah"); rs.updateInt("Age", 24); rs.insertRow(); rs.first();

Regroupement de plusieurs mise à jour: connexion.setAutoCommit(false); Statement st = connexion.createStatement(); st.addBatch("INSERT..."); int[] nb = st.executeBatch(); On peut combiner des « Prepared Statement » et des « Batch updates ».

Les DataSource L'interface javax.sql.DataSource permet: d'obtenir une connexion JDBC, de gérer un pool de connexion, de faire disparaître les constantes (placées dans un annuaire JNDI ou un fichier de configuration).

Les RowSet L'accès aux données est encapsulé dans un seul Bean: javax.sql.rowset.CachedRowSet rs = new com.sun.rowset.CachedRowSetImpl(); rs.setUrl("jdbc:mysql://localhost/dbessai"); rs.setCommand("SELECT * FROM personne"); rs.setUsername(fgfgf"); rs.setPassword("..."); rs.setConcurrency(ResultSet.CONCUR_UPDATABLE); rs.execute(); while (rs.next()) System.out.println("Nom : " + rs.getString("nom")); rs.close();

Il existe trois types de RowSet: JDBCRowSet (basé sur JDBC), CachedRowSet (déconnecté de la base), WebRowSet (échange basé sur des flux XML),

Exemple1.. JSP et JDBC ID EMP Nom Employé <% Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/bdemp"; Connection conn = DriverManager.getConnection(url, "root", ""); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from employes"); while(rs.next()){ String eid = rs.getString("idemp"); String nom = rs.getString("nom"); %> <% } stmt.close(); conn.close(); %>

Il est possible dutiliser la technologie JavaBeans entre une page JSP et un beans pour obtenir une meilleure séparation entre Modèle, Vue et Contrôleur (Model View Controller – MVC).

.*,java.sql.*" %> Exempe 2 JSP JDBC Avec JavaBean ID EMP Nom Employé <% empbean.makeConnection(); if (empbean.getEmployes()){ while (empbean.getNextEmploye()) { String eid = empbean.getColumn("idemp"); String nome = empbean.getColumn("nom"); %> <% } } empbean.takeDown(); %>

import java.sql.*; import java.io.*; public abstract class sqlBean { private String myDriver = "com.mysql.jdbc.Driver"; private String myURL = "jdbc:mysql://localhost:3306/bdemp"; protected Connection myconn; public sqlBean() { } public void makeConnection() throws Exception { Class.forName(myDriver); myconn = DriverManager.getConnection(myURL); } public abstract void cleanup() throws Exception; public void takeDown() throws Exception { cleanup(); myconn.close(); } }

import java.sql.*; public class empQBean extends sqlBean { String myEmpSql = "select * from employes"; ResultSet rs = null; Statement stmt = null; public empQBean() { super(); } public boolean getNextEmploye() throws Exception { return rs.next(); } public String getColumn(String inCol) throws Exception { return rs.getString(inCol); } public boolean getEmployes() throws Exception { String myQuery = myEmpSql; stmt = myconn.createStatement(); rs = stmt.executeQuery(myQuery); return (rs != null); } public void cleanup() throws Exception { stmt.close(); } }