II - Jdbc 280 - PowerPoint PPT Presentation

About This Presentation
Title:

II - Jdbc 280

Description:

JDBC Java Databases Connectivity – PowerPoint PPT presentation

Number of Views:159
Avg rating:3.0/5.0
Slides: 16
Provided by: OlivierD156
Category:

less

Transcript and Presenter's Notes

Title: II - Jdbc 280


1
JDBC
  • Java Databases Connectivity

2
Objectifs
  • Fournir un accès homogène aux SGBDR
  • Abstraction des SGBDR cibles
  • Requêtes SQL
  • Simple à mettre en oeuvre
  • Core API (1.1)

3
Fonctionnement
  • JDBC interagit avec le SGBDR par un driver
  • Il existe des drivers pour Oracle, Sybase,
    Informix, DB2, ...
  • 4 types de drivers
  • 1. Bridge ODBC (fourni avec JDBC)
  • 2. Native-API partly-Java driver
  • 3. JDBC-Net all-Java driver
  • 4. Native-protocol all-Java driver
  • 1. et 2. nécessite des architectures 3-tiers pour
    les applets

4
Drivers JDBC
Client
Application Java
JDBC API
JDBC-ODBC Bridge
JDBC-Native Bridge
JDBC-Net Bridge
All Java JDBC Driver
(Type 2)
(Type 4)
(Type 1)
(Type 3)
Native API (C, C)
ODBC Driver
JDBC NetDriver
SGBDR
5
Architectures 2-tier et 3-tier
J D B C
Application ou Applet
SGBDR
TCP / Protocole propriètaire (SqlNet Oracle)
Architecture 2-tier
J D B C
SGBDR
Applet
Frontend
Architecture 3-tier
6
Accès aux données
  • 1 Charger le driver
  • 2 Connexion à la base
  • 3 Création d'un statement
  • 4 Exécution de la requête
  • 5 Lecture des résultats

7
Chargement du driver
  • Utiliser la méthode forName de la classe Class
  • Class.forName("sun.jdbc.odbc.JdbcOrdbDriver").newI
    nstance()
  • Class.forName("postgres95.pgDriver").newInstance()

8
Connexion à la base (1/2)
  • Accès via un URL qui spécifie
  • l'utilisation de JDBC
  • le driver ou le type du SGBDR
  • l'identification de la base
  • Exemple
  • String url"jdbcodbcma_base"
  • String url"jdbcpg95mabase?usernametotopasswor
    dtiti"
  • Ouverture de la connexion
  • Connection conn DriverManager.getConnection(url,
    user, password)

9
Création d'un Statement
  • 3 types de statement
  • statement requêtes simples
  • prepared statement requêtes précompilées
  • callable statement procédures stockées
  • Création d'un statement
  • Statement stmt conn.createStatement()

10
Execution d'une requête (1/2)
  • 3 types d'executions
  • executeQuery pour les requêtes qui retournent
    un ResultSet
  • executeUpdate pour les requêtes INSERT, UPDATE,
    DELETE, CREATE TABLE et DROP TABLE
  • execute pour quelques cas rares (procédures
    stockées)

11
Execution d'une requête (2/2)
  • Execution de la requête
  • String myQuery "SELECT prenom, nom, email "
  • "FROM employe "
  • "WHERE (nom'Dupont') AND (email
    IS NOT NULL) "
  • "ORDER BY nom"
  • ResultSet rs stmt.executeQuery(myQuery)

12
Lecture des résultats (1/2)
  • executeQuery() renvoit un ResultSet
  • Le RS se parcourt itérativement row par row
  • Les colonnes sont référencées par leur numéro ou
    par leur nom
  • L'accès aux valeurs des colonnes se fait par les
    méthodes getXXX() où XXX représente le type de
    l'objet
  • Pour les très gros row, on peut utiliser des
    streams.

13
Lecture des résultats (2/2)
  • java.sql.Statement stmt conn.createStatement()
  • ResultSet rs stmt.executeQuery("SELECT a, b, c
    FROM Table1")
  • while (rs.next())
  • // print the values for the current row.
  • int i rs.getInt("a")
  • String s rs.getString("b")
  • byte b rs.getBytes("c")
  • System.out.println("ROW " i " " s
    " " b0)

14
Accès aux méta-données
  • La méthode getMetaData() permet d'obtenir les
    méta-données d'un ResultSet.
  • Elle renvoit des ResultSetMetaData.
  • On peut connaitre
  • Le nombre de colonne getColumnCount()
  • Le nom d'une colonne getColumnName(int col)
  • Le type d'une colonne getColumnType(int col)
  • ...

15
Exemple complet
  • public class TestJDBC
  • public static void main(String args) throws
    Exception
  • Class.forName("postgres95.pgDriver")
  • Connection conn
  • conn DriverManager.getConnection("jdbcpg95
    mabase", "dedieu", "")
  • Statement stmt conn.createStatement()
  • ResultSet rs stmt.executeQuery("SELECT
    from employe")
  • while (rs.next())
  • String nom rs.getString("nom")
  • String prenom rs.getString("prenom")
  • String email rs.getString("email")
Write a Comment
User Comments (0)
About PowerShow.com