Exemple corrigé
Soit la base de données nommée « BaseDSI » ayant pour source « SourceMatière » et comportant la table suivante :
Matière (Code(entier), Libelle(chaîne de caractère), Coefficient(entier))
On désire créer une interface graphique qui permet d’ajouter une matière à la base de données puis d’afficher l’ensemble des enregistrements de la table Matière.
Pour cela on va établir une connexion avec la base via un pont JDBC-OdbC, le pilote étant : « sun.jdbc.odbc.JdbcOdbcDriver » puis essayer d’exécuter la requête INSERT qui prendra comme valeur l’ensemble des champs récupérés dans notre interface graphique.

Travail à faire :
1. Quelles sont les bibliothèques java nécessaires pour implémenter cette application ?
2. Donnez le code correspondant à la création de l’interface graphique.
- La lasse MatiereDB est une fenêtre composée d’un panneau disposé au nord et d’une zone de texte.
- Le panneau contient l’ensemble des étiquettes et des champs texte représentant le code, le libellé, le coefficient de la matière ainsi que deux bouton « Ajouter » et « Afficher » permettant de déclencher les évènements d’ajout d’une matière à la table et l’affichage de l’ensemble des matières
- N’oubliez pas de charger le driver, d’établir une connexion à la base et de créer un statement dans le constructeur.
// Déclarations des bibliothèques
………………….. ;
…………………… ;
public class MatièreDB …………………………………………………………… {
……………………………………………… ;//Déclarations des composants de l’interface
……………………………………………… ;//Déclarations des objets relatifs à la base
public MatièreDB(){
……………………………………………//Titre de la fenêtre
……………………………………………//Récupération de la vitre
……………………………………… //Création du panneau
…………………………………………/\Modification du gestionnaire de position par …………………………………………un GridLayout 3 lignes 2 colonnes\/
………………………………………/\Création de l’ensemble des composants du …………………………………………panneau\/
…………………………………………/\Création de la zone de texte\/
…………………………………………/\Ajout des composants à la vitre\/
setVisible(true);
setSize(220,160);
/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
try
{ ………………………………………//Chargement du driver
………………………………………//connexion à la base
………………………………………//Création du statement
Publicité
}
catch(java.lang.ClassNotFoundException e)
{ System.err.println("Pb de driver : " + e.getMessage()); }
catch(SQLException e)
{ System.err.println("SQLException: " + e.getMessage()); }
}
/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/
public void actionPerformed(ActionEvent e) {
if (e.getSource()== …………………)
{
String req1=……………………/\Requête d’insertion des champs ……………………………………………… récupérés dans l’interface\/
try {
…………………………………………………//execution de la requête
} catch (SQLException e1) {
e1.printStackTrace();
}
}
if (e.getSource()== …………………………..){
try{
String req2="……………………//Sélection de l’ensemble ……………………………………………………; des matières
……………………// Exécution de la requête
…………………………………/\Affichage du nom des colonne et des ……………………………………………lignes du résultat de l’exécution \/
/\Utiliser la méthode append(String) pour ajouter des lines au JTextArea \/
}
}catch (SQLException ex){
System.err.println(ex);
}
}
}
public static void main(String[]arg) {
MatièreDB mdb=new MatièreDB();
Publicité
}
}
import java.sql.\* ;
import javax.\* ;
public class MatièreDB extends JFrame implements ActionListener {
JTextField t1, t2, t3, t4;
List le;
JPanel p;
JButton b1, b2;
JTextArea ta;
String url = "jdbc:odbc:SourceMat";
Connection con = null;
Statement stmt;
PreparedStatement ps;
ResultSet rs;
String r1, r2;
public MatièreDB() {
super("Gestion des matières DSI");
Container c = this.getContentPane();
p = new JPanel();
p.setLayout(new GridLayout(4, 2));
p.add(new JLabel("Code matière"));
t1 = new JTextField(10);
p.add(t1);
p.add(new JLabel("Libellé matière"));
t2 = new JTextField(10);
p.add(t2);
p.add(new JLabel("Coefficient matière"));
t3 = new JTextField(10);
p.add(t3);
b1 = new JButton("Ajouter");
Publicité
p.add(b1);
b1.addActionListener(this);
b2 = new JButton("Affiher");
p.add(b2);
b2.addActionListener(this);
c.add(p, "North");
c.add(new JLabel("Matières DSI"));
ta = new JTextArea();
c.add(ta);
setVisible(true);
setSize(220, 160);
/\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \*/
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(url, "", "");
} catch (java.lang.ClassNotFoundException e) {
System.err.println("Pb de driver : " + e.getMessage());
} catch (SQLException e) {
System.err.println("SQLException: " + e.getMessage());
}
}
/\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \/
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == b1) {
String req = "INSERT INTO Matière VALUES ("
+ Integer.parseInt(t1.getText()) + ",'" + t2.getText()
+ "'," + Integer.parseInt(t3.getText()) + ")";
try {
stmt = con.createStatement();
int x = stmt.executeUpdate(req);
Publicité
System.out.println("nombreeeee" + x);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
if (e.getSource() == b2) {
try {
String req2 = "SELECT \* FROM Matière";
ResultSet rs = stmt.executeQuery(req2);
ResultSetMetaData rsmd = rs.getMetaData();
int nbcols = rsmd.getColumnCount();
for (int i = 1; i <= nbcols; i++)
ta.append(rsmd.getColumnLabel(i) + " | ");
ta.append("\n");
while (rs.next()) {
for (int i = 1; i <= nbcols; i++)
ta.append(rs.getString(i) + " | ");
ta.append("\n");
}
} catch (SQLException ex) {
System.err.println(ex);
}
}
}
public static void main(String[] arg) {
MatièreDB mdb = new MatièreDB();
}
}