Principes d'utilisation des systèmes de gestion de bases de données

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

Java DataBaseConnectivity

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

Accès aux bases de données

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

JDBC le langage Java XVI-1 JMF

TP Programmation Java / JDBC / Oracle

Java et les bases de données

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

OpenPaaS Le réseau social d'entreprise

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

Les bases de données

Dialogue avec la base de données

TP Contraintes - Triggers

Logiciel de gestion de caisse et d ardoises

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

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

CATALOGUE FORMATIONS DOMAINE Bases de données

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

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

Panorama des Bases de Données

Implémentation des SGBD

Bases de Données Avancées

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Application web de gestion de comptes en banques

SQL Historique

Cours: Administration d'une Base de Données

A QUOI SERVENT LES BASES DE DONNÉES?

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

Cours Bases de données 2ème année IUT

Compétences Business Objects

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

[BASE DE DONNEES MULTIMEDIA]

PHP. PHP et bases de données

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

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

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

Présentation du module Base de données spatio-temporelles

A QUOI SERVENT LES BASES DE DONNÉES?

IFT3030 Base de données. Chapitre 1 Introduction

Les BASES de DONNEES dans WampServer

CHAPITRE 1 ARCHITECTURE

Le Langage De Description De Données(LDD)

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

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

Bases de données relationnelles

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

Java - MySQL. Code: java-mysql

JavaServer Pages (JSP)

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

Bases de données avancées

Bases de Données Relationnelles. Le Modèle Relationnel

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

SQL MAP. Etude d un logiciel SQL Injection

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

Chapitre 5 : Les procédures stockées PL/SQL

Module BD et sites WEB

Bases de Données Avancées

PROJET 1 : BASE DE DONNÉES REPARTIES

Intégrité des données

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Introduction aux bases de données

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

Intégrité sémantique dans les bases de données relationnelles

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

Optimisations des SGBDR. Étude de cas : MySQL

PDO : PHP Data Object 1/13

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Chapitre 2. Classes et objets

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

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

1. Base de données SQLite

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

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

Table des matières. Avant-propos

2 Chapitre 1 Introduction

Les bases de l optimisation SQL avec DB2 for i

Programme et contenus Licence d'informatique de Lille, parcours MIAGE, en alternance ou en formation continue (13:40)

BTS/CGO P10 SYSTEME INFORMATION Année

Présentation du PL/SQL

Programmation par les Objets en Java

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

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

Encryptions, compression et partitionnement des données

RMI le langage Java XII-1 JMF

Java Database Connectivity (JDBC) - Langage SQL

Cours d initiation à la programmation en C++ Johann Cuenin

Information utiles. webpage : Google+ : digiusto/

Création d une application JEE

Panorama des Bases de Données

Bases de données et sites WEB Licence d informatique LI345

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

Transcription:

Principes d'utilisation des systèmes de gestion de bases de données JDBC L3 Informatique Emmanuel Waller, LRI, Orsay

JDBC le mode programme JDBC : qu'est ce que c'est? Avantages? devant les machines interface, portabilité, connexion gestion erreurs BD (intuition), transactions exécution d'ordres BD : principe, avec/sans paramètres, curseurs, SQL dynamique JDBC et l'architecture en couches Ref cursor, gestion communication programmeserveur, métadonnées

pbs MP : exécution d'ordres BD principe et déroulement ordres sans paramètre ordres avec paramètres appel procédure stockée SQL dynamique curseurs

principe et déroulement création d'un «objet ordre» générique (ordre SQL non fixé) envoi de l'ordre au serveur par méthode de cet objet si select : récupération du résultat (curseur) gestion erreurs 3 catégories : ordres BD sans ou avec paramètres paramètre : valeur d'une colonne appel procédure stockée PL/SQL

pbs MP : exécution d'ordres BD principe et déroulement ordres sans paramètre ordres avec paramètres appel procédure stockée SQL dynamique curseurs

ordres SQL avec paramètres ordres SQL DML (insert, update, delete, select) remarque : même paramètres que dans PL/SQL (rappel : variables table ou colonne impossible) déroulement : création «objet ordre» pour un ordre SQL fixé avec des paramètres formels + précompilation («préparation») affectation des valeurs aux paramètres envoi au serveur, etc.

exemple situation : on veut enregistrer l'anniversaire d'une personne (= age++ dans BD) principe : where paramétré par le nom de la personne code : PreparedStatement stmt = conn.preparestatement( «update personne set age = age+1 where nom =?»); stmt.setstring(1, «Jeanne»); stmt.executeupdate();

PreparedStatement création par méthode de Connection : PreparedStatement preparestatement(string sql) throws SQLException String sql : contient un symbole «?» pour chaque paramètre repérés par leur position de gauche à droite (en commençant à 1)

affectation par setxxx de PreparedStatement où XXX est un type primitif de Java une méthode pour chaque tel type ex : void setstring(int indiceparametre, String x) throws SQLException x converti en varchar par le SGBD

exécution par : executeupdate si sql non requête executequery si sql requête utilisable même si aucun paramètre (mais inutilement coûteux) rem : nombre et type des paramètres doivent être connus

avantage PreparedStatement sur Statement ex : même situation, mais plusieurs anniversaires possible avec Statement : String[] p = {«Jeanne», «Jules»}; Statement stmt = conn.createstatement(); for (int i=0; i<p.length; i++) stmt.executeupdate( «update personne set age = age+1 where nom = '» + p[i] + «'» ); compilation et exécution à chaque fois (rq : il faut les apostrophes si chaîne de car. Oracle)

PreparedStatement : String[] p = {«Jeanne», «Jules»}; PreparedStatement stmt = conn.preparestatement( «update personne set age = age+1 where nom =?»); for (int i=0; i<p.length; i++) { stmt.setstring(1, p[i]); stmt.executeupdate(); } précompilation une seule fois exécution plusieurs fois avec nouvelles valeurs des paramètres (rq : pas d'apostrophe)

pbs MP : exécution d'ordres BD principe et déroulement ordres sans paramètre ordres avec paramètres appel procédure stockée SQL dynamique curseurs

appel de procédure stockée exemple : on a déjà une procédure stockée : anniversaire(n varchar) incrémente de 1 l'âge de la ligne de nom n on veut l'appeler depuis notre programme Java code : String n = «Jeanne»; CallableStatement stmt = conn.preparecall( «{call anniversaire(?)}»); stmt.setstring(1, «Jeanne»); // comme PreparedStatement stmt.executeupdate(); // comme PreparedStatement CallableStatement hérite de PreparedStatement

lecture de paramètre OUT d'une procédure stockée valeur renvoyée par une fonction stockée après exécution : registeroutparameters : «déclarer» le type du paramètre (parmi java.sql.types) getxxx

appel de la fonction âge : CallableStatement stmt = conn.preparecall( «{? = call age(?)}»); stmt.setstring(2, «Jeanne»); stmt.registeroutparameter(1, Types.INTEGER); stmt.execute(); System.out.println(stmt.getInt(1));

il existe variantes syntaxe «bloc anonymes» mais spécifiques à Oracle ci dessus : portable (Sybase, etc.)

récapitulatif ordres SQL sans paramètres (schéma, instance, y compris select) : Statement ordres SQL avec paramètres (instance, y compris select) : PreparedStatement appel procédure stockée (avec ou sans paramètres) : CallableStatement

pbs MP : exécution d'ordres BD principe et déroulement ordres sans paramètre ordres avec paramètres appel procédure stockée SQL dynamique curseurs

JDBC le mode programme JDBC : qu'est ce que c'est? Avantages? devant les machines interface, portabilité, connexion gestion erreurs BD (intuition), transactions exécution d'ordres BD : principe, avec/sans paramètres, curseurs, SQL dynamique JDBC et l'architecture en couches Ref cursor, gestion communication programmeserveur, métadonnées

pbs MP : SQL dynamique vu en PL/SQL (ex : table inconnue lors compilation) JDBC : immédiat car ordre est une String : concaténation par + (subtilité si nombre/type attributs retour select inconnu) Impossible faire autrement : JDBC ne fait que SQL dynamique contrepartie : ordres non connus lors compilation => vérification statique impossible (ex : table n'existe pas) programmes moins robustes (vérification statique : SQLJ)

JDBC et l'architecture en couches même principe qu'en objet : les données sont encapsulées accès par procédures stockées (sauf rares cas) Java : interagit peu avec la base : appelle les procédures stockées gère commit et rollback si nécessaire : curseur pour affichage est plutôt dédié à la partie non BD de l'application

Le type Oracle ref cursor Import oracle.jdbc.driver.*; Une fonction stockée peut Remplir un curseur Renvoyer un pointeur sur ce curseur : type ref cursor Ce pointeur se récupère en JDBC : CallableStatement cstmt = conn.preparecall("{? = call f() }");...registeroutparameters(1, OracleType, CURSOR)...execute... ResultSet rset = (ResultSet) cstmt.getobject(1); // 1 : la valeur de retour de la fonction PL... // parcours normal de rset

JDBC le mode programme JDBC : qu'est ce que c'est? Avantages? devant les machines interface, portabilité, connexion gestion erreurs BD (intuition), transactions exécution d'ordres BD : principe, avec/sans paramètres, curseurs, SQL dynamique JDBC et l'architecture en couches Ref cursor, gestion communication programmeserveur, métadonnées