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



Documents pareils
Java DataBaseConnectivity

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

TP Programmation Java / JDBC / Oracle

Programmation d application Bases de données avec Java

1. Langage de programmation Java

JDBC le langage Java XVI-1 JMF

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 :

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

JDBC JDBC. Java DataBase Connectivity

OpenPaaS Le réseau social d'entreprise

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

Java Database Connectivity (JDBC) - Langage SQL

Application web de gestion de comptes en banques

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

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)

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Programmer en JAVA. par Tama

Création et Gestion des tables

Dialogue avec la base de données

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

as Architecture des Systèmes d Information

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Java Licence Professionnelle CISII,

Java - MySQL. Code: java-mysql

Cours 1: Java et les objets

Olivier Mondet

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

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

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

Remote Method Invocation (RMI)

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Tutoriel d installation de Hibernate avec Eclipse

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

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

Optimisations des SGBDR. Étude de cas : MySQL

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

Applet pour visualiser les variables «automate» notifiées

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

1. Base de données SQLite

TD3: tableaux avancées, première classe et chaînes

Programmation Objet Java Correction

Exercices sur SQL server 2000

Auto-évaluation Programmation en Java

Construire une base de donnée pour bibliothèque

Chapitre 10. Les interfaces Comparable et Comparator 1

TP1 : Initiation à Java et Eclipse

CREATION WEB DYNAMIQUE

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

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

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

PROGRAMMATION PAR OBJETS

1/ Présentation de SQL Server :

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

Utilisation d objets : String et ArrayList

Corrigé des exercices sur les références

INITIATION AU LANGAGE JAVA

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é

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

Cours: Administration d'une Base de Données

Bases de données relationnelles

Premiers Pas en Programmation Objet : les Classes et les Objets

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

INF 321 : mémento de la syntaxe de Java

Programmation en Java IUT GEII (MC-II1) 1

Panorama des Bases de Données

Java Licence Professionnelle CISII,

Paradox 9. Guide de l utilisateur jpdox Web Utilities

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

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

Package Java.util Classe générique

Une introduction à Java

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

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

FileMaker 10. Guide ODBC et JDBC

I. MySQL : Serveur et SGBD

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

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

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

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

Le Langage De Description De Données(LDD)

RMI le langage Java XII-1 JMF

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

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

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

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

Programmation Par Objets

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)

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

Flux de données Lecture/Ecriture Fichiers

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

La base de données XML exist. A. Belaïd

Développement Logiciel

Compte Rendu d intégration d application

Transcription:

Cours Bases de données 2ème année IUT Cours 6 : JDBC : ou comment lier ORACLE avec Java 1ère partie Anne Vilnat http://www.limsi.fr/individu/anne/cours

Plan 1 Introduction 2 les étapes de la connexion Mise en place du pilote Nommer la base de données Etablir la connexion Dialogue avec la base de données Deconnexion

Introduction : le problème Appli Java? BD Usage JDBC pour exécuter, depuis un programme Java, l ensemble des ordres SQL reconnus par la base de données cible. La base de données doit reconnaître le langage ANSI SQL-2.

Introduction : JDBC Appli Java API JDBC? BD Définition JDBC (Java DataBase Connectivity) est une API (Application Programming Interface) qui permet d exécuter des instructions SQL. JDBC fait partie du JDK (Java Development Kit). Paquetage java.sql : import java.sql.*;

Introduction : Gestion du pilote Appli Java API JDBC JDBC Driver Manager? BD Le pilote... Il va établir le lien avec la base de données, en sachant lui parler. Dans JDBC : des classes chargées de gérer un pilote... Pilote récent : en Java Des pilotes existent pour mysql, postgressql, ACCESS,...

Introduction : Driver Manager Appli Java API JDBC JDBC Driver Manager Driver Protocole natif Appels SQL BD Java La connexion... Elle peut s établir SI on donne l adresse de la BD à laquelle se connecter...

Les classes et interfaces du package java.sql Connexion createstatement preparestatement preparecall Statement sous classe PreparedStatement sous classe CallableStatement executequery executequery Entrées de PS Data Types Entrées/Sorties de CS executequery getxxx getmoreresults/getresultset ResultSet

Etapes Fonctionnement Etapes d un programme utilisant JDBC : 1 mettre en place le pilote ou driver. 2 établir une connexion avec une source de données. 3 effectuer les requêtes. 4 utiliser les données obtenues pour des affichages, des traitements statistiques, etc. 5 mettre à jour les informations de la source des données. 6 terminer la connexion. 7 éventuellement, recommencer en 1.

Les étapes... exemples 1 charger un pilote driver Class.forName( oracle.jdbc.driver.oracledriver ); 2 créer un objet Connection Connection.maConnection=DriverManager.getConnection(url); url : String contenant l adresse de la base de données 3 créer un objet Statement Statement.maRequeteSQL=maConnection(); 4 envoyer la requête et récupérer le résultat dans un ResultSet ResultSet.monResultat= marequetesql.executequery(texterequetesql); texterequetesql : String contenant le texte de la requête, par exemple : SELECT * FROM Client

Mise en place du pilote 2 méthodes : Chargement statique enregistrer le ou les drivers(s) à utiliser à chaque connexion, passer comme argument l url correspondante utiliser l interface java.sql.driver : écrire une classe Driver, pour créer une instance d elle-même et l enregistrer avec la méthode DriverManager.registerDriver() pas la plus simple, ni la plus usitée...

Mise en place du pilote Chargement dynamique A la demande, sans noter explicitement le nom des classes : try { Class.forName( oracle.jdbc.driver.oracledriver ); } catch (Exception e){ System.out.println( Impossible de charger le driver ); return; } Des pilotes existent pour mysql, postgressql, ACCESS,...

Nommage des bases de données Dérivée des url d internet. Schéma général jdbc:<sous-protocole>:<compléments> jdbc = protocole sous-protocole : pour distinguer le type de pilote jdbc oracle:thin à l IUT complements : la base de données. Syntaxe : login/motdepasse@ordinateur:port:base. Exemple : toto/mdptoto@orasrv1.ens.iut-orsay.fr:1521:etudom

Connexion par la méthode getconnection de DriverManager : Exemple import java.net.*; import java.sql.*; String url= jdbc:oracle:thin:toto/mdptoto@r2d2.iut-orsay.upsud.fr:1521:etudom ; try { Class.forName( oracle.jdbc.driver.oracledriver ); } catch (Exception e){ System.out.println( Impossible de charger le driver ); return; Connection maconnexion=drivermanager.getconnection(url); }

Connection maconnexion=drivermanager.getconnection(url); } Connexion ou en utilisant les objets DataSource Exemple import java.sql.*; import oracle.jdbc.pool.*; public class TestDataSource { public static void main(string args[]) throws ClassNotFoundException, SQLException { OracleDataSource ds = new OracleDataSource(); ds.setdrivertype( thin ); ds.setservername ( r2d2 ); ds.setportnumber(1521); ds.setdatabasename( etudom ); ds.setuser( toto ); ds.setpassword( mdptoto );

Les tuyaux sont en place... Appli Java API JDBC JDBC Driver Manager Driver Protocole natif Appels SQL BD Java

Rappel : les classes et interfaces du package java.sql Connexion createstatement preparestatement preparecall Statement sous classe PreparedStatement sous classe CallableStatement executequery executequery Entrées de PS Data Types Entrées/Sorties de CS executequery getxxx getmoreresults/getresultset ResultSet

Pour dialoguer : Statement Exemple Statement moninstruction = maconnexion.createstatement(); suivant l instruction SQL Instructions SQL Méthode Type retourné Valeur retournée SELECT executequery ResultSet Lignes de résultat UPDATE, executeupdate int Nb lignes INSERT,DELETE modifiées Autres execute boolean Faux si erreur

Consultation et récupération de données Exemple ResultSet monrésultat = moninstruction.executequery( SELECT login, nomclient FROM toto.client ); ResultsSet et ses méthodes Résultat dans un ResultSet Parcours analogue à celui d un curseur avec la méthode next, et accès aux colonnes avec getxxx Exemple de parcours while (monresultat.next()) { String nom = monresultat.getstring( nomclient ); int login=monresultat.getint ( login ); // traitement des données récupérées }

Consultation et récupération de données ResultsSet et ses méthodes Le premier next positionne sur la première ligne. Paramètres de getxxx : nom de l attribut ou rang dans la requête (sous forme d entier). Obligatoire pour les attributs calculés (MAX(...) ou quand les noms ne sont pas connus (SELECT *...) Exemple de parcours while (monresultat.next()) { String nom = monresultat.getstring(2); int login=monresultat.getint (1); // traitement des données récupérées }

Les correspondances de types Type SQL Type Java CHAR, VARCHAR2, String NUMERIC, DECIMAL java.math.bigdecimal BIT boolean TINYINT byte SMALLINT short INTEGER int BIGINT long REAL float FLOAT, DOUBLE double BINARY, VARBINARY, LONGVARBINARY byte [ ] DATE java.sql.date TIME java.sql.time TIMESTAMP java.sql.timestamp

Les valeurs NULL Problème : reconnaître dans Java le cas d une valeur NULL. Conventions : Pour les méthodes getstring(), getobject(), getdate(),... : Null Java (il existe) Pour les méthodes getint(), getbyte(), getshort(),... : la valeur 0 est renvoyée Pour la méthode getboolean(), la valeur Faux est renvoyée. MAIS pas correct pour reconnaître des valeurs non renseignées dans la base... D où la méthode wasnull() de ResultSet. Fonctionnement : lire la donnée, tester avec wasnull() si elle vaut NULL au sens SQL

Accès et mise à jour Pour INSERT, DELETE et UPDATE... La classe Statement a : executeupdate() Elle retourne un int qui contient le nombre de lignes affectées par l instruction. Exemple int nblignes = moninstruction.executeupdate( INSERT INTO toto.client(login, nomclient) VALUES ( + numero +, + nom + ) ); System.out.println(nbLignes + ligne(s) insérée(s) ) ;

Modification de la définition des données Pour modifier la structure de la base La classe Statement a : execute(ordresql) L ordre SQL correspond à la chaîne de caractères contenant l ordre à éxécuter Elle retourne un boolean qui est vrai si il n y a pas eu d erreur à l éxécution..

Déconnexion Libérer ResultSet et Statement, fermer la Connection Exemple monresultat.close() ; moninstruction.close() ; maconnexion.close() ;