Introduction à JDBC. Accès aux bases de données en Java



Documents pareils
Java DataBaseConnectivity

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Accès aux bases de données

TP Programmation Java / JDBC / Oracle

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Programmation d application Bases de données avec Java

OpenPaaS Le réseau social d'entreprise

JDBC le langage Java XVI-1 JMF

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

1. Langage de programmation Java

Java et les bases de données

Java Database Connectivity (JDBC) - Langage SQL

Application web de gestion de comptes en banques

PHP. PHP et bases de données

Mysql. Les requêtes préparées Prepared statements

JDBC JDBC. Java DataBase Connectivity

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Dialogue avec la base de données

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

Java - MySQL. Code: java-mysql

Cours: Administration d'une Base de Données

Le langage SQL (première partie) c Olivier Caron

Notes de cours : bases de données distribuées et repliquées

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

1. Base de données SQLite

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

PHP 4 PARTIE : BASE DE DONNEES

CREATION WEB DYNAMIQUE

Logiciel de gestion de caisse et d ardoises

FileMaker 13. Guide ODBC et JDBC

PHP 5. La base de données MySql. A. Belaïd 1

LES ACCES ODBC AVEC LE SYSTEME SAS

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Compte-rendu de projet de Système de gestion de base de données

Optimisations des SGBDR. Étude de cas : MySQL

Gestion des utilisateurs et de leurs droits

Exploitation de bases de données relationnelles et orientées objet IFT287

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Installation / configuration des applications PreInscription et Inscription Web Ajax

Stockage du fichier dans une table mysql:

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

PDO : PHP Data Object 1/13

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Connectivité aux bases de données Java (JDBC)

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Chapitre 10. Les interfaces Comparable et Comparator 1

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

I. MySQL : Serveur et SGBD

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Bases de Données relationnelles et leurs systèmes de Gestion

Pratique et administration des systèmes

Plan. Accès aux données dans le framework.net. ADO.NET Entity Framework LINQ ADO.NET ADO.NET. 1. ADO.NET Mode connecté Mode non connecté

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

Le Langage De Description De Données(LDD)

Test de HSQLDB et Comparatif avec Sqlite

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

MODE OPERATOIRE OPENOFFICE BASE

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Raja Bases de données distribuées A Lire - Tutoriel

PROJET 1 : BASE DE DONNÉES REPARTIES

Généralités sur le Langage Java et éléments syntaxiques.

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Plan du cours. Historique du langage Nouveautés de Java 7

contact@nqicorp.com - Web :

Serveur d'archivage 2007 Installation et utilisation de la BD exist

SQL Historique

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Bases de données relationnelles

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Olivier Mondet

Panorama des Bases de Données

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

SQL Server Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)

Bases de données et sites WEB

Compte Rendu d intégration d application

Le Langage SQL version Oracle

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Gestion distribuée (par sockets) de banque en Java

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

FileMaker 10. Guide ODBC et JDBC

Les bases de données

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Paradox 9. Guide de l utilisateur jpdox Web Utilities

Programmer en JAVA. par Tama

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Transcription:

Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1

Introduction JDBC : Java Data Base Connectivity Framework permettant l'accès aux bases de données relationnelles dans un programme Java Indépendament du type de la base utilisée (mysql, Oracle, Postgres...) Seule la phase de connexion au SGBDR change Permet de faire tout type de requêtes Sélection de données dans des tables Création de tables et insertion d'éléments dans les tables Gestion des transactions Packages : java.sql et javax.sql 2

Principes généraux d'accès à une BDD Première étape Préciser le type de driver que l'on veut utiliser Driver permet de gérer l'accès à un type particulier de SGBD Deuxième étape Récupérer un objet «Connection» en s'identifiant auprès du SGBD et en précisant la base utilisée Etapes suivantes A partir de la connexion, créer un «statement» (état) correspondant à une requête particulière Exécuter ce statement au niveau du SGBD Fermer le statement Dernière étape Se déconnecter de la base en fermant la connexion 3

Connexion au SGBD Classe java.sql.drivermanager Gestion du contrôle et de la connexion au SGBD Méthodes principales static void registerdriver(driver driver) Enregistre le driver (objet driver) pour un type de SGBD particulier Le driver est dépendant du SGBD utilisé static Connection getconnection( String url, String user, String password) Crée une connexion permettant d'utiliser une base url : identification de la base considérée sur le SGBD Format de l'url est dépendant du SGGB utilisé user : nom de l'utilisateur qui se connecte à la base password : mot de passe de l'utilisateur 4

Gestion des connexions Interface java.sql.connection Préparation de l'exécution d'instructions sur la base, 2 types Instruction simple : classe Statement On exécute directement et une fois l'action sur la base Instruction paramétrée : classe PreparedStatement L'instruction est générique, des champs sont non remplis Permet une pré-compilation de l'instruction optimisant les performances Pour chaque exécution, on précise les champs manquants Pour ces 2 instructions, 2 types d'ordres possibles Update : mise à jour du contenu de la base Query : consulation (avec un select) des données de la base 5

Gestion des connexions Méthodes principales de Connection Statement createstatement() Retourne un état permettant de réaliser une instruction simple PreparedStatement preparestatement( String ordre) Retourne un état permettant de réaliser une instruction paramétrée et pré-compilée pour un ordre ordre Dans l'ordre, les champs libres (au nombre quelconque) sont précisés par des «?» Ex : ''select nom from clients where ville=?'' Lors de l'exécution de l'ordre, on précisera la valeur du champ void close() Ferme la connexion avec le SGBD 6

Classe Statement Instruction simple ResultSet executequery(string ordre) Exécute un ordre de type SELECT sur la base Retourne un objet de type ResultSet contenant tous les résultats de la requête int executeupdate(string ordre) Exécute un ordre de type INSERT, UPDATE, ou DELETE void close() Ferme l'état 7

Instruction paramétrée Classe PreparedStatement Avant d'exécuter l'ordre, on remplit les champs avec void set[type](int index, [Type] val) Remplit le champ en i ème position définie par index avec la valeur val de type [Type] [Type] peut être : String, int, float, long... Ex : void setstring(int index, String val) ResultSet executequery() Exécute un ordre de type SELECT sur la base Retourne un objet de type ResultSet contenant tous les résultats de la requête int executeupdate() Exécute un ordre de type INSERT, UPDATE, ou DELETE 8

Lecture des résultats Classe ResultSet Contient les résultats d'une requête SELECT Plusieurs lignes contenant plusieurs colonnes On y accède ligne par ligne puis valeur par valeur dans la ligne Changements de ligne boolean next() Se place à la ligne suivante s'il y en a une Retourne true si le déplacement a été fait, false s'il n'y avait pas d'autre ligne boolean previous() Se place à la ligne précédente s'il y en a une Retourne true si le déplacement a été fait, false s'il n'y avait pas de ligne précédente boolean absolute(int index) Se place à la ligne numérotée index Retourne true si le déplacement a été fait, false sinon 9

Classe ResultSet Lecture des résultats Accès aux colonnes/données dans une ligne [type] get[type](int col) Retourne le contenu de la colonne col dont l'élément est de type [type] avec [type] pouvant être String, int, float, boolean... Ex : String getstring(int col) Fermeture du ResultSet void close() 10

Exception SQLException Toutes les méthodes présentées précédemment peuvent lever l'exception SQLException Exception générique lors d'un problème d'accès à la base lors de la connexion, d'une requête... Plusieurs spécialisations sont définies (voir API) Opérations possibles sur cette exception int geterrorcode() : le code de l'erreur renvoyé par le SGBD (et dépendant du type du SGBD) SQLException getnextexception() : si plusieurs exceptions sont chaînées entre elles, retourne la suivante ou null s'il n'y en a pas String getsqlstate() : retourne «l'état SQL» associé à l'exception 11

Exemple Accès à une base Oracle contenant 2 tables categorie (codecat, libellecat) produit (codprod, nomprod, codecat*) Source de l'exemple : A. Lacayrelle Paramètres de la base Fonctionne sur la machine ladybird sur le port 1521 Base s'appelle «test» Utilisateur qui se connecte : «étudiant», mot de passe : «mdpetud» 12

Exemple Création de la connexion à la base Connection con; // chargement du driver Oracle DriverManager.registerDriver( new oracle.jdbc.driver.oracledriver()); // création de la connexion con = DriverManager.getConnection( ''jdbc :oracle :thin :@ladybird :1521 :test, ''etudiant'', ''mdpetud''); //note: la syntaxe du premier argument dépend du type // du SGBD 13

Exemple Exécution d'une instruction simple de type SELECT Lister toutes les caractéristiques de toutes les catégories Statement req; ResultSet res; String libelle; int code; req = con.createstatement(); res = req.executequery( ''select codcat, libellecat from categorie''); while(res.next()) { code = getint(1); libelle = getstring(2); System.out.println( } req.close(); '' produit : ''+code +'',''+ libelle); 14

Exemple Exécution d'une instruction simple de type UPDATE Ajouter une catégorie «céréales» de code 5 dans la table catégories Statement req; int nb; req = con.createstatement(); nb = req.executeupdate('' insert into categories values (5, 'cereales')''); System.out.println( '' nombre de lignes modifiées : ''+nb); req.close(); 15

Exemple Instruction paramétrée de type SELECT Retourne tous les produits de la catégorie céréales PreparedStatement req; ResultSet res; String nom; int code; req = con.preparestatement(''select codprod, nomprod from categorie c, produit p where c.codcat=p.codcat and libellecat =?''); req.setstring(1, ''cereales''); res = req.executequery(); while(res.next()) { code = getint(1); libelle = getstring(2); System.out.println( '' produit : ''+code +'',''+ libelle); } 16 req.close();

Exemple Instruction paramétrée de type UPDATE Ajout de 2 nouvelles catégories dans la table catégorie PreparedStatement req; int nb; req = con.preparestatement( ''insert into categories values (?,?)''); req.setint(1, 12); req.setstring(2, ''fruits''); nb = req.executeupdate(); req.setint(1, 13); req.setstring(2, ''légumes''); nb = req.executeupdate(); req.close(); 17

Fonctionnalité avancée Gestion des transactions Transaction Transaction Un ensemble d'action est effectué en entier ou pas du tout Voir documentation spécialisée 18