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
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
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 (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")