Interface Java Oracle : JDBC



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

TP Programmation Java / JDBC / Oracle

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

Java DataBaseConnectivity

OpenPaaS Le réseau social d'entreprise

Programmation d application Bases de données avec Java

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

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

Accès aux bases de données

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

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

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

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

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

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)

TP Contraintes - Triggers

1. Langage de programmation Java

Java et les bases de données

SQL Historique

Construire une base de donnée pour bibliothèque

Application web de gestion de comptes en banques

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

Panorama des Bases de Données

CREATION WEB DYNAMIQUE

Dialogue avec la base de données

1. Base de données SQLite

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

Le Langage SQL version Oracle

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

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

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

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

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

Package Java.util Classe générique

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

JDBC JDBC. Java DataBase Connectivity

Historisation des données

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

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

FileMaker 10. Guide ODBC et JDBC

Compétences Business Objects

Développement d applications avec les bases de données

[BASE DE DONNEES MULTIMEDIA]

Pratique et administration des systèmes

Intégrité des données

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

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)

Bases de données avancées

Bases de données relationnelles

Olivier Mondet

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é

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

Le Langage De Description De Données(LDD)

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

Java - MySQL. Code: java-mysql

Java Database Connectivity (JDBC) - Langage SQL

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

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

Paradox 9. Guide de l utilisateur jpdox Web Utilities

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

Cours: Administration d'une Base de Données

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

CHAPITRE 1 ARCHITECTURE

Bases de données et sites WEB

Java au cœur de la base de données Oracle

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

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Création et Gestion des tables

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

A QUOI SERVENT LES BASES DE DONNÉES?

Gestion de base de données

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

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

I. MySQL : Serveur et SGBD

Configurer la supervision pour une base MS SQL Server Viadéis Services

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

Auto-évaluation Oracle: cours de base

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

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

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

Java Licence Professionnelle CISII,

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

Tutoriel d installation de Hibernate avec Eclipse

1 Position du problème

BASES DE DONNEES TP POSTGRESQL

Création d une application JEE

Bases de Données Réparties

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

CATALOGUE FORMATIONS DOMAINE 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

Les BASES de DONNEES dans WampServer

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

A QUOI SERVENT LES BASES DE DONNÉES?

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

PHP 4 PARTIE : BASE DE DONNEES

Transcription:

Interface Java Oracle : JDBC Christine Bonnet Sommaire Démarche globale JDBC --- 6 Accès s en consultation --- 9 Accès s en modification --- 13 Ordres dynamiques --- 19 Procédures stockées --- 24 I-2 Christine Bonnet

JDBC (Java DataBase Connectivity) ) : interface API (Application Programming Interface) permet d exécuter des ordres SQL dans un programme Java I-3 Christine Bonnet Package java.sql Exécution depuis un programme hôte écrit en Java d ordres d SQL reconnus par le noyau de la base de données cible; Gestion des résultats r des requêtes SQL dans le code Java. import java.sql.*; I-4 Christine Bonnet

CONNEXION À ORACLE par ll intermédiaire de JDBC en utilisant une URL (Uniform Resource Locator) Exemple : «jdbc:oracle:thin:@iutainfo:1521:info8i :@iutainfo:1521:info8i» I-5 Christine Bonnet ÉTABLISSEMENT D'UNE CONNEXION 1. Déclaration et chargement du driver : Méthodes de la classe DriverManager public static void registerdriver(driver driver) throws SQLException Exemple : DriverManager.registerDriver(new oracle.jdbc.driver.oracledriver()); I-6 Christine Bonnet

ÉTABLISSEMENT D UNE CONNEXION (SUITE) 2. Connexion à une base locale en utilisant l URL, le nom de l utilisateur, son mot de passe. Méthodes de la classe DriverManager public static Connection getconnection(string url, String user, String password) throws SQLException Exemple : Connection connec = DriverManager.getConnection ("jdbc:oracle:thin:@iutainfo:1521:info8i", :@iutainfo:1521:info8i", "2gr1","2gr1"); if (connec(!= null) System.out.println("Connexion etablie"); I-7 Christine Bonnet 3. Accès à la base : requêtes SQL. 4. Fermeture de la connexion : nomconnexion.close() Exemple : connec.close(); I-8 Christine Bonnet

ACCÈS À LA BASE EN CONSULTATION Création d'un objet de type Statement qui reçoit l ordre l SQL select et l envoie l au SGBD pour exécution. Méthode public Statement createstatement() Statement nomordre = nomconnexion.createstatement(); Création d'un objet de type ResultSet qui reçoit le résultat r de ll exécution de la requête. Méthode public ResultSet executequery(string sql) ResultSet nomresultset = nomordre.executequery("requête SQL select "); I-9 Christine Bonnet EXPLOITATION DES RÉSULTATS Méthode public boolean next() while (nomresultset.next()) ()) { String nom = nomresultset.getstring("ename"); ename"); public String getstring(string columnname). nomordre.close(); nomresultset.close(); nomconnexion.close(); I-10 Christine Bonnet

EXEMPLE import java.sql.*; class JdbcTest { public static void main (String args []) throws SQLException { // Chargement du driver DriverManager.registerDriver (new oracle.jdbc.driver.oracledriver()); // Connexion à une base locale Connection connec = DriverManager.getConnection("jdbc:oracle:thin:@iutainfo: thin:@ :@iutainfo: 1521:info8i", "2gr1", "2gr1"); I-11 Christine Bonnet // Création d'une requête Statement stmt = connec.createstatement (); ResultSet rset = stmt.executequery ("select ename from emp"); // Affichage des noms des employés while (rset.next ()) System.out.println (rset.getstring (1)); // Déconnexion D public String getstring(int columnindex) stmt.close(); rset.close(); connec.close(); I-12 Christine Bonnet

ACCÈS POUR UN ORDRE DDL OU UN ORDRE DML Méthode public Statement createstatement() Statement nomordre = nomconnexion.createstatement(); Statement nomordre = nomconnexion.createstatement(); Méthode public int executeupdate(string sql) int nomvariableresultat = nomordre.executeupdate("requête SQL "); Valeur retournée e : 0 pour un ordre DDL create (ou nombre de tuples créés), 0 pour drop table, le nombre de lignes traitées pour un ordre DML (insert, update, delete). I-13 Christine Bonnet EXEMPLE import java.sql.*; public class Tp2 { public static void main(string[] args) throws SQLException { // connexion DriverManager.registerDriver(new oracle.jdbc.driver.oracledriver()); Connection connec = DriverManager.getConnection("jdbc:oracle:thin:@iutainfo:1521: thin:@ :@iutainfo:1521: info8i","2gr1","2gr1"); // suppression puis création de la table TEmployés Statement stmt0= connec.createstatement(); int r0 = stmt0.executeupdate("drop table TEmployés"); System.out.println("suppression de la table " + r0); Statement stmt= connec.createstatement(); int r1 = =stmt.executeupdate("create create table TEmployés as select * from emp"); System.out.println("creation de la table " + r1); I-14 Christine Bonnet

TP2 question a : moyenne des salaires des employés s ayant le même travail que l'employé n 7369 Statement stmt1= connec.createstatement(); ResultSet rset1 =stmt1.executequery("select avg(sal) from TEmployés where job=(select job from TEmployés where empno=7369)"); while (rset1.next()) System.out.println(rset1.getFloat(1)); I-15 Christine Bonnet TP2 question b : màj du salaire des employés s (sal < moyenne? moyenne_salaire : salaire * 1.1) Statement stmt2= connec.createstatement(); int r2 =stmt2.executeupdate("update TEmployés x set sal = (select decode(least(x.sal,avg(sal)),x.sal,avg(sal avg(sal)), (sal)),x.sal avg(sal ),x.sal*1. 1) from TEmployés where job=x.job) where empno=7369"); System.out.println("nombre de lignes mises a jour " + r2); I-16 Christine Bonnet

// déconnexiond stmt0.close(); stmt.close(); stmt1.close(); stmt2.close(); rset1.close(); connec.close(); // fin classe Tp2 I-17 Christine Bonnet Exécution : suppression de la table 0 création de la table 14 1105.75 nombre de lignes mises a jour 1 Appuyez sur une touche pour continuer... I-18 Christine Bonnet

ORDRES SQL DYNAMIQUES Requête paramétrée e : Utilisation de la méthode m public PreparedStatement preparestatement(string sql) et du caractère re "?" pour représenter la valeur d une d variable PreparedStatement nomordre = nomconnexion.preparestatement("ordre sql contenant des? "); I-19 Christine Bonnet ORDRES SQL DYNAMIQUES (suite) Lecture ou renseignement des variables : Méthode setxxx,, avec XXX type de la variable (String, Int, Float,, Date, ) Exemple : public void setfloat(int parameterindex, float x) nomordre.setxxx(rang, valeur); (rang : position du paramètre dans l ordre l SQL) I-20 Christine Bonnet

EXEMPLE import java.sql.*; class OrdreDyna { public static void main (String args []) throws SQLException { String unnom = "BobLEPONGE"; "; // Chargement du driver Oracle DriverManager.registerDriver (new oracle.jdbc.driver.oracledriver()); // Connexion à une base locale Connection connec = DriverManager.getConnection ("jdbc:oracle:thin:@iutainfo:1521:info8i","2gr1", :@iutainfo:1521:info8i","2gr1", "2gr1"); // création d'une table Statement stmt1 = connec.createstatement(); int r = stmt1.executeupdate("create create table adherent(numad numad number(4) primary key,, nom varchar2(14))"); System.out.println("création de la table " + r); I-21 Christine Bonnet // insertion d'un tuple PreparedStatement insere = connec.preparestatement("insert into adherent values (?,?)"); // renseignement des variables insere.setint(1,123); insere.setstring(2,unnom); // insertion du tuple insere.executeupdate(); // sans argument // lecture de la table Statement stmt2= connec.createstatement(); ResultSet rset1 =stmt2.executequery("select select * from adherent"); while (rset1.next()){ ){ System.out.println( rset1.getint(1)+ "\t"" ); System.out.println( rset1.getstring(2) ); I-22 Christine Bonnet

// DéconnexionD stmt1.close(); stmt2.close(); rset1.close(); connec.close(); Exécution création de la table 0 123 BobLEPONGE Appuyez sur une touche pour continuer... I-23 Christine Bonnet PROCÉDURES STOCKÉES EN JAVA 1. Création de classes Java 2. Chargement des classes Java dans la base de données loadjava user utilisateur/mot_de_passe nomclassejava.class 3. Déploiement des classes Java par la création d'une procédure ou fonction stockée 4. Appel de la fonction, procédure stockée à partir du langage SQL : CALL à l'intérieur d'un bloc PL/SQL à l'intérieur d'un déclencheur directement au niveau de SQL*PLUS I-24 Christine Bonnet