23
JDBC Réaliser en Java un programme client d’une Base de Données

JDBC Réaliser en Java un programme client dune Base de Données

Embed Size (px)

Citation preview

JDBC

Réaliser en Java un programme client d’une Base de Données

Un accès universel aux sources de données

Programme Client Programme dorsal(serveur)

Magasin de données

Moteur

IHM

Noyau de l’application

Programmes decouche intermédiaire(middle-tier software)

API JDBC (Java Data Base Connectivity) et pilotes JDBC

Programme Java

Source de donnéescompatible ODBC

(ACCESS, EXCEL,…)

Type 1 :

Pont JDBC-ODBC

API ODBC

Pilote ODBC

La meilleure solution de connexion

Type 4

Programme Java

Source de données(MySQL, Oracle, PostGres…)

Pilote JDBC

Pour le projet GLPOO…

BIG-GROCERComptoir

(base ACCESS)

Pont JDBC-ODBC

API ODBC

Pilote ODBC

Déclarer la source de données Comptoir au gestionnaire ODBC de Windows (1)

Déclarer la source de données Comptoir au gestionnaire ODBC de Windows (2)

Déclarer la source de données Comptoir au gestionnaire ODBC de Windows (3)

Déclarer la source de données Comptoir au gestionnaire ODBC de Windows (4)

La base de données Comptoir

import java.sql.*; public class EssaiJDBC_ODBC { public static void main (String [ ] args) { Connection conn = null; try { Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection ("jdbc:odbc:Comptoir","",""); System.out.println ("Connexion etablie avec COMPTOIR"); } catch (Exception e) {System.err.println ("Pas de connexion à COMPTOIR");} finally { if (conn != null) { try { conn.close ( ); System.out.println ("Connexion terminee"); } catch (Exception e) { } } } } }

Un programme client qui se connecte à la base COMPTOIR

Variante : connexion à une base mySQL

try {

String url = "jdbc:mysql://localhost/grocer";

Class.forName ("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection (url, "toto", "toto");

System.out.println ("Connexion etablie avec GROCER");

}

import java.sql.*;public class EssaiSELECT { public static void main (String [ ] args) { Connection conn = null; try { Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection ("jdbc:odbc:Comptoir","","");

System.out.println ("Connexion etablie avec COMPTOIR"); Statement s = conn.createStatement ( ); s.executeQuery ("SELECT Nom, [N° Employé], [Date de naissance] FROM Employés"); ResultSet rs = s.getResultSet ( ); while (rs.next ( )){

String nomVal = rs.getString ("Nom");int numéro = rs.getInt("N° Employé");Date date = rs.getDate("Date de naissance");

System.out.println ("N° Employé : " + numéro + " Nom : " + nomVal + " Date de naissance : " + date);} rs.close ( ); s.close ( ); } catch (Exception e) {System.err.println ("Pb avec SELECT");} finally { if (conn != null) { try { conn.close ( ); System.out.println ("Connexion terminee");} catch (Exception e) {System.err.println ("Pb de fermeture de connexion");}}}}}

Exécution d’une requête SQL

Résultat du SELECT

Exécution d’une instruction SQL

Statement s = conn.createStatement ( );s.executeUpdate ("INSERT INTO Messagers VALUES (4,'La Poste', '01 46 21 32 64')");s.executeQuery ("SELECT * FROM Messagers");ResultSet rs = s.getResultSet ( ); while (rs.next ( )){ int numéro = rs.getInt("N° messager"); String nom = rs.getString("Nom du messager"); String tel = rs.getString("Téléphone"); System.out.println ("N° messager : " + numéro + " Société : " + nom + " Téléphone : " + tel); }rs.close ( );s.close ( );

Affichage graphique d’une table (1)

Affichage graphique d’une table (2)import java.sql.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class EssaiTableGraphique extends JFrame{ String [ ] [ ] données; public static void main (String [ ] args) { EssaiTableGraphique etg = new EssaiTableGraphique(100); etg.setSize(400,400); etg.show( ); }

public EssaiTableGraphique(int nbLignes) { Connection conn = null; try { Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection ("jdbc:odbc:Comptoir","",""); System.out.println ("Connexion etablie avec COMPTOIR"); Statement s = conn.createStatement ( ); s.executeQuery ("SELECT [Nom du produit],[Prix unitaire], [Unités en stock] FROM Produits"); ResultSet rs = s.getResultSet ( ); données = new String [nbLignes][3]; int i = 0; while (rs.next ( )){ données[i][0] = rs.getString("Nom du produit"); données[i][1] = rs.getString ("Prix unitaire"); données[i][2] = rs.getString("Unités en stock");

i++; }

Affichage graphique d’une table (3)

rs.close ( ); s.close ( ); } catch (Exception e) {System.err.println ("Pb SQL");} finally { if (conn != null) { try { conn.close ( ); System.out.println ("Connexion terminee"); } catch (Exception e) { } } } String[ ] nomsColonnes = {"produit", "Prix unitaire", "Quantité en stock"}; JTable table = new JTable(données, nomsColonnes); table.setPreferredScrollableViewportSize(new Dimension(500, 70)); JScrollPane scrollPane = new JScrollPane(table); getContentPane().add(scrollPane, BorderLayout.CENTER); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); } }

Utilisation de l'éditeur de requête d'ACCESS (1)

Sélectionner "Requêtes" dans le panneau de gauche, cliquezsur le bouton "Nouveau" dans la barre d'outils et sélectionnez"Assistant requête simple"

Utilisation de l'éditeur de requête d'ACCESS (2)

Choisir la table sur laquelle porte la "requête simple" (un SELECT)et sélectionner les champs visés par la requête

Utilisation de l'éditeur de requête d'ACCESS (3)

Choisissez une requête détaillée, puis "Modifier la structure"

Utilisation de l'éditeur de requête d'ACCESS (4)

Ajoutez vos contraintes sur les valeurs des champs (comme sousEXCEL avec les "zones de critères" pour les "filtrages élaborés")

Utilisation de l'éditeur de requête d'ACCESS (5)

Déroulez le menu "Affichage" de la fenêtre principale d'ACCESSet choisissez l'item "Mode SQL"…vous n'avez plus qu'à copierle code SQL dans votre code Java…