Implementation of a GUI Application for Managing Database Table 'Matière'

1/6
100%

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.

![](data:image/png;base64...)

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

}

}

Implementation of a GUI Application for Managing Database Table 'Matière'

Software Development (Java with Database Integration) · exam

Voir tous les documents en programmation

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.

![](data:image/png;base64...)

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

}

}