JDBC - Free

publicité
JDBC
Réaliser en Java un programme client
d’une Base de Données
Un accès universel aux sources de données
IHM
Magasin de données
Noyau de l’application
Programme Client
Moteur
Programmes de
couche intermédiaire
(middle-tier software)
Programme dorsal
(serveur)
API JDBC (Java Data Base Connectivity) et pilotes JDBC
Type 1 :
Source de données
compatible ODBC
(ACCESS, EXCEL,…)
Programme Java
Pont JDBC-ODBC
Pilote ODBC
API ODBC
La meilleure solution de connexion
Type 4
Programme Java
Pilote JDBC
Source de données
(MySQL, Oracle, PostGres…)
Pour le projet GLPOO…
Comptoir
(base ACCESS)
BIG-GROCER
Pont JDBC-ODBC
Pilote ODBC
API 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.*;
Un programme client qui se connecte à la base
public class EssaiJDBC_ODBC {
COMPTOIR
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) { }
}
}
}
}
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.*;
Exécution d’une requête 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");}}}}}
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)
import java.sql.*;
Affichage graphique d’une table (2)
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, cliquez
sur 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 sous
EXCEL 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'ACCESS
et choisissez l'item "Mode SQL"…vous n'avez plus qu'à copier
le code SQL dans votre code Java…
Téléchargement