Vous êtes sur la page 1sur 18

http://sites.google.

com/site/walidzeddini/cours-isi

Programmation Web Avancée

Mastère SSII

TP2 – SGBD

walid.zeddini@gmail.com

walid.zeddini@tradenet.com.tn

© 2018 - 2019 ISI - Tunis


Atelier 1

Objectifs :

• Installation SGBD
• Création Rôle
• Création BD
• Exécution Script SQL
• Relations 1- n / n – n
• JDBC / Dao

Atelier 1 – SGBD / PostgreSQL Page : 2 / 18


Enoncé
Activité 1 : Installation SGBD  PostgreSQL

1. Télécharger l’installateur Postgres à partir du lien suivant :


https://www.postgresql.org/download/windows/

2. Au cours de l’installation, installer pgAdmin3 LTS

3. Entrer un mot de passe pour le superuser de postgres (Ex : ssii ou bien zedgres etc…)

4. Ne pas oublier ce mot de passe !

5. Une fois l’installation est terminée, lancer pgAdmin3 LTS

Activité 2 : Création Rôle  User / Connexion

1. Ajouter un nouveau rôle de connexion ayant les privilièges d’un super user:

Exemple :
 Login : ssii ou bien zedgres
• Mot de passe : ssii ou bien zedgres

Activité 3 : Création BD  Base de Données

1. Ajouter une nouvelle BD appelée : BD_SSII_1

2. Le propriétaire de la base de données BD_SSII_1 doit être l’user/rôle/connexion


précédemment crée (ssii ou bien zedgres etc..)

3. La nouvelle BD doit contenir les tables qui figurent dans le modèle physique qui suit (A
noter que dans l’activité 4, il y aura un script SQL à exécuter) :
Produit
Categorie
FK_PRODUIT_REFERENCE_CATEGORI idProduit INT4
idCateg INT4
codeCateg VARCHAR(254) idCategorie INT4
libelleCateg VARCHAR(254) desigProduit VARCHAR(254)
puProduit NUMERIC
qteProduit INT4
configProduit VARCHAR(254)
marqueProduit VARCHAR(254)
modeleProduit VARCHAR(254)

FK_PRODUIT_REFERENCE_COMMANDE

Client
idClient BigDecimal
Commande loginClient VARCHAR(254)
motPasseClient VARCHAR(254)
idProduit INT4 FK_CLIENT_REFERENCE_COMMANDE nomClient VARCHAR(254)
idClient BigDecimal prenomClient VARCHAR(254)
qteCommande INT4 civ iliteClient VARCHAR(254)
dateCommande DATE dateNaissanceClient VARCHAR(254)
etatCommande INT4 numeroAdrClient VARCHAR(254)
rueAdrClient VARCHAR(254)
communeAdrClient VARCHAR(254)
v illeAdrClient VARCHAR(254)
cpAdrClient VARCHAR(254)
telClient VARCHAR(254)
faxClient VARCHAR(254)
gsmClient VARCHAR(254)
emailClient VARCHAR(254)

Activité 3 : Exécution Script SQL / Création BD  Base de Données

1. Ouvrir la BD BD_SSII_1 (précédemment crée)

2. Découvrir les différentes fonctionnalités et rubriques contenues sous la dites BD tels


que Schéma, , Tables, …..

3. Exécuter le Script SQL ci-joint en Annexe qui permet la :


• Création Tables :
 Categorie
 Client
 Produit
 Commande
• Création Contraintes
• Création Séquences
• Insertion des données dans les Tables créées

Activité 4 : Diagramme des classe  JDBC / Beans / Dao / Eclipse

1. Créer un nouveau projet Java MonProjet_DaoBeans qui implémente le diagramme

de classes de la BD (précédemment crée) suivant :


Categorie Produit Client
- idCateg : int 1..1 - idProduit : int - idClient : BigDecimal
- codeCateg : String 0..* - idCategorie : int - loginClient : String
- libelleCateg : String - desigProduit : String - motPasseClient : String
+ <<Constructor>> Categorie () - puProduit : Double - nomClient : String
1..* - qteProduit : Integer - prenomClient : String
produit - configProduit : String - civ iliteClient : String
- marqueProduit : String - dateNaissanceClient : String
- modeleProduit : String - numeroAdrClient : String
+ <<Constructor>> Produit () - rueAdrClient : String
1..* - communeAdrClient : String
- v illeAdrClient : String
Com m ande - cpAdrClient : String
- telClient : String
- client : Client[] 1..*
1..* - faxClient : String
- produit : Produit[] client - gsmClient : String
- qteCommande : Integer
- emailClient : String
- dateCommande : Date
- etatCommande : Integer + <<Constructor>> Client ()
+ <<Constructor>> Commande ()

2. Créer les classes ci-dessus dans le package tn.rnu.isi.dto .

3. Générer les getter et les setters de chaque attribut des différents classes.

4. Renommer le package en tn.rnu.isi.beans

5. Créer le package tn.rnu.isi.dao puis créer les classes interfaces (déclarant les
méthodes CRUD : Create, Read, Update, Delete) Dao relatives à chaque
classes beans:
• CategorieDao
• ClientDao
• ProduitDao
• CommandeDao

6. Créer une classe de gestion connexion ResourceManager dans le package


tn.rnu.isi.resource . Cette classe possède les méthodes d’ouverture et de clôture
de connexion ainsi que les paramètres de connexion à la base de données :
• DRIVER = "org.postgresql.Driver";
• URL = "jdbc:postgresql://localhost/ BD_SSII_1 ";
• USER = "zedgres";
• PASSWORD = "zedgres";

7. Créer le package tn.rnu.isi.dao_impl qui contient les classes implémentant les


méthodes CRUD (Persistance) déclarés dans les classes Daos:
• CategorieDaoImpl
• ClientDaoImpl
• ProduitDaoimpl
• CommandeDaoImpl

8. Déplacer classe de gestion connexion ResourceManager dans le package


tn.rnu.isi.dao_impl
Annexe
Activité 3 :

Voici le script SQL de création de la base de données :

-- ----------------------------
-- Table structure for "categorie"
-- ----------------------------
CREATE TABLE categorie(
id_categ NUMERIC(19,0) NOT NULL ,
code_categ VARCHAR(10) NULL,
libelle_categ VARCHAR(50) NULL,
PRIMARY KEY (id_categ)
);
-- ----------------------------
-- Table structure for "client"
-- ----------------------------
CREATE TABLE "CLIENT"(
id_client NUMERIC(19,0) NOT NULL ,
login_client VARCHAR(20) NULL,
mot_passe_client VARCHAR(20) NULL,
nom_client VARCHAR(70) NULL,
prenom_client VARCHAR(70) NULL,
civilite_client VARCHAR(7) NULL,
date_naissance_client VARCHAR(20) NULL,
numero_adr_client VARCHAR(5) NULL,
rue_adr_client VARCHAR(100) NULL,
commune_adr_client VARCHAR(50) NULL,
ville_adr_client VARCHAR(50) NULL,
cp_adr_client VARCHAR(10) NULL,
tel_client VARCHAR(20) NULL,
fax_client VARCHAR(20) NULL,
gsm_client VARCHAR(20) NULL,
email_client VARCHAR(50) NULL,
PRIMARY KEY (id_client)

);
-- ----------------------------
-- Table structure for "produit"
-- ----------------------------
CREATE TABLE produit(
id_produit NUMERIC(19,0) NOT NULL ,
id_categ NUMERIC(19,0) NOT NULL ,
desig_produit VARCHAR(100) NULL,
pu_produit NUMERIC (9, 3) NULL,
qte_produit INTEGER NULL,
config_produit VARCHAR(100) NULL,
marque_produit VARCHAR(50) NULL,
modele_produit VARCHAR(50) NULL,
PRIMARY KEY (id_produit)
);
-- ----------------------------
-- Table structure for "commande"
-- ----------------------------
CREATE TABLE commande(
id_commande NUMERIC(19,0) NOT NULL ,
id_client NUMERIC(19,0) NOT NULL,
id_produit NUMERIC(19,0) NOT NULL,
qte_commande INTEGER NULL,
date_commande DATE NULL,
etat_commande INTEGER NULL,
PRIMARY KEY (id_commande)

);

ALTER TABLE commande ADD FOREIGN KEY (id_client) REFERENCES client (id_client);

ALTER TABLE commande ADD FOREIGN KEY (id_produit) REFERENCES produit (id_produit);

ALTER TABLE produit ADD FOREIGN KEY (id_categ) REFERENCES categorie (id_categ);

-- ----------------------------
-- Insertions des donnes
-- ----------------------------
INSERT INTO categorie VALUES ('1', '1', 'LabTops');
INSERT INTO categorie VALUES ('2', '2', 'Ordinateurs');
INSERT INTO categorie VALUES ('3', '3', 'CD et DVD Drives');
INSERT INTO categorie VALUES ('4', '4', 'Hard Drives');
INSERT INTO categorie VALUES ('5', '5', 'Inkjet Printers');
INSERT INTO categorie VALUES ('6', '6', 'Internet Routers');
INSERT INTO categorie VALUES ('7', '7', 'Keyboards');
INSERT INTO categorie VALUES ('8', '8', 'Laser Printers');
INSERT INTO categorie VALUES ('9', '9', 'Netbooks');
INSERT INTO categorie VALUES ('10', '10', 'Network Adapters');
INSERT INTO categorie VALUES ('11', '11', 'Network Switches');
INSERT INTO categorie VALUES ('12', '12', 'Processors (CPUs)');
INSERT INTO categorie VALUES ('13', '13', 'Scanners');
INSERT INTO categorie VALUES ('14', '14', 'SD Secure Digital');
INSERT INTO categorie VALUES ('15', '15', 'Sound Cards');
INSERT INTO categorie VALUES ('16', '16', 'Speakers et Audio');
INSERT INTO categorie VALUES ('17', '17', 'USB Flash Drives');
INSERT INTO categorie VALUES ('18', '18', 'Video Cards');
INSERT INTO categorie VALUES ('19', '19', 'Webcams');
INSERT INTO categorie VALUES ('20', '20', 'Wireless Accessories');

INSERT INTO "CLIENT" VALUES ('1', 'Alex', 'Alex', 'DUPONT', 'Alex', 'Mr.', '15/11/1992', '42', 'RUE LA DANCE', 'LA
DEFENSE', 'PARIS', '60620', '02125487', '', '0698464641', 'alex.dupont@yahoo.fr');
INSERT INTO "CLIENT" VALUES ('2', 'Didier', 'Didier', 'TRIZIG', 'Didier', 'Mr.', '13/09/1977', '5', 'RUE DES MARTYRS',
'CENTRE', 'NICE', '70250', '05214587', '02125478', '06215487', 'did.mar@gmail.com');
INSERT INTO "CLIENT" VALUES ('3', 'Fabricia', 'Fabricia', 'ZARRA', 'Fabricia', 'Mme.', '06/11/1988', '6', 'RUE DES
AGHLABITES', 'ZONE URBAIN', 'LE HAVRE', '04125441', '02724223', '', '0698222222', 'fab.z@gmail.com');

INSERT INTO produit VALUES ('1', '1', 'Acer', '480', '12', 'Acer Aspire AX3300-ED2215A AMD Athlon II X2 215 4GB 640GB
GeForce 9200 Winndows 7 Home Desktop ', 'Acer', 'Aspire AX3300');
INSERT INTO produit VALUES ('2', '1', 'Samsung', '849.99', '15', 'Samsung R530L Intel Core 2 Duo T6600 4GB 500GB 15.6IN HD
WLAN Webcam Windows 7 Premium Notebook Red ', 'Samsung', 'R530L ');
INSERT INTO produit VALUES ('3', '1', 'Samsung', '370', '24', 'Samsung R480-I5 Intel Core i5 430M 4GB 500GB 14IN HD WLAN
Webcam Windows 7 Premium Notebook Red ', 'Samsung', 'R480-I5');
INSERT INTO produit VALUES ('4', '1', 'MSI', '500', '30', 'MSI GX640-098US Intel Core i5 430M 4GB 500GB 15.4IN WSXGA+
Radeon HD5850 Windows 7 Premium Notebook ', 'MSI', 'GX640-098US');
INSERT INTO produit VALUES ('5', '1', 'Toshiba', '670.99', '18', 'Toshiba Satellite L450-01M Intel T4300 4GB 250GB 15.6IN
HD DVDRW Windows 7 Home Premium Notebook ', 'Toshiba', 'Satellite L450-01M');
INSERT INTO produit VALUES ('6', '1', 'Acer', '589', '60', 'Acer R3610 Revo Intel Atom 330 4GB 500GB NVIDIA ION HDMI eSATA
WLAN GbE Windows 7 Home Premium ', 'Acer', 'R3610');
INSERT INTO produit VALUES ('7', '1', 'Acer', '599.99', '38', 'Acer M3620 Revo Intel Atom 330 2GB 160GB NVIDIA ION HDMI
eSATA 802.11N GbE Windows 7 Home Premium ', 'Acer', 'M3620');
INSERT INTO produit VALUES ('8', '1', 'HP Compaq', '75', '56', 'HP Compaq CQ5210F AMD Athlon II X2 215 3GB 500GB DVDRW
Windows 7 Premium X64 Desktop PC ', 'HP Compaq', 'CQ5210F');
INSERT INTO produit VALUES ('9', '1', 'Lenovo', '47', '70', 'Lenovo Ideapad S12 Intel Atom N270 1.6GHZ 1GB 160GB 12.1IN
WXGA Webcam Windows XP Home Netbook 6CELL', 'Lenovo', 'Ideapad S12');
INSERT INTO produit VALUES ('10', '1', 'Dell', '599', '47', 'Dell Inspiron 15 Nb Dual Core T4200 2.0GHZ 3GB 250GB 15.6IN
DVDRW Vista Basic 1 Yr Depot Warranty ', 'Dell', 'Inspiron 15 Nb');
INSERT INTO produit VALUES ('11', '1', 'Toshiba', '789', '29', 'Toshiba NB305-01E Intel Atom N450 1GB 250GB 10.1IN WSVGA
Windows 7 Starter Netbook Blue 6 Cell ', 'Toshiba', 'NB305-01E');
INSERT INTO produit VALUES ('12', '1', 'HP Compaq', '840', '19', 'HP Pavilion DV7 Intel Core 2 Duo T6600 4GB 250GB DVDRW
Windows 7 Premium X64 Desktop PC ', 'HP Compaq', 'Pavilion DV7');
INSERT INTO produit VALUES ('13', '1', 'Toshiba', '569', '78', 'Toshiba Satellite P500-00T Intel i7 720QM 4GB 640GB 18.4IN
HD+ GeForce GT330M Bluray Win 7 Notebook ', 'Toshiba', 'Satellite P500');
INSERT INTO produit VALUES ('14', '1', 'ASUS', '489', '120', 'ASUS Eee PC 1201N Black Atom N330 NVIDIA ION 2GB 250G 12.1IN
1366X768 Draft N WIN7 Premium Netbook ', 'ASUS', 'Eee PC 1201N');
INSERT INTO produit VALUES ('15', '3', 'MicroLux', '1', '3000', 'CD VERBATIM 700 MO 80 MINUTES', 'MicroLux', 'MicroLux');
INSERT INTO produit VALUES ('16', '16', 'Patriot', '35', '400', 'Patriot Box Office Network Media Player 2.5IN HDD Support
USB HDMI LAN MKV RMVB ISO DTS P2P', 'Patriot', 'Box Office');
INSERT INTO produit VALUES ('17', '12', 'Intel', '120', '500', 'Intel Core i5 750 Quad Core Processor Lynnfield LGA1156
2.66GHZ 8MB Cache Retail Box', 'Intel', 'Core i5');
INSERT INTO produit VALUES ('18', '18', 'Powercolor', '45', '100', 'Powercolor Radeon HD 5870 1GB GDDR5 2XDVI HDMI Display
Port DIRECTX11 PCI-E Video Card W/ DIRT2', 'Powercolor', 'Radeon HD');
INSERT INTO produit VALUES ('19', '18', 'XFX', '34', '120', 'XFX Radeon HD 5770 850MHZ 1GB 4.8GHZ GDDR5 2XDVI HDMI Display
Port DIRECTX11 PCI-E Video CARD-', 'XFX', 'Radeon');
INSERT INTO produit VALUES ('20', '17', 'Kingston', '10', '5000', 'Kingston SSDNow V Series Gen II 64GB 2.5IN SATA2 Solid
State Disk Flash Drive ', 'Kingston', 'SSDNow');
INSERT INTO produit VALUES ('21', '20', 'Warpia', '2', '450', 'Warpia Lifecam Cinema 720P 16:9 HD Webcam Retail Box Auto
Focus Noise Cancelling Microphone ', 'Warpia', 'Lifecam');
INSERT INTO produit VALUES ('22', '2', 'Toshiba', '560', '59', 'Toshiba Corsair Obsidian Series 800D Full Tower Case EATX
5X5.25 4X3.5 ', 'Toshiba', 'Obsidian ');
INSERT INTO produit VALUES ('23', '4', 'Western', '4000', '100', 'Western Digital My Passport Essential 500GB External
Hard Drive USB 2.0 Black ', 'Western', 'Essential');

INSERT INTO commande VALUES ('1', '1', '10', '56', TO_DATE('22/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('2', '1', '1', '1', TO_DATE('23/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('3', '1', '20', '6544', TO_DATE('22/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('4', '1', '1', '1', TO_DATE('23/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('5', '2', '3', '1', TO_DATE('20/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('6', '3', '14', '1', TO_DATE('24/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('7', '3', '20', '2', TO_DATE('24/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('8', '2', '3', '1', TO_DATE('25/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('9', '2', '1', '1', TO_DATE('25/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('10', '3', '5', '1', TO_DATE('25/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('11', '3', '8', '1', TO_DATE('24/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('12', '3', '4', '1', TO_DATE('25/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('13', '2', '20', '1', TO_DATE('23/11/2016', 'dd/mm/yyyy'), '1');
INSERT INTO commande VALUES ('14', '2', '16', '1', TO_DATE('21/11/2016', 'dd/mm/yyyy'), '1');
Corrigé
Activité 4 :

Voici le code Java d’une classe Bean (Produit) :

package tn.rnu.isi.beans;

/**
* Classe Bean Produit
*/
public class Produit implements java.io.Serializable {

private int idProduit;


private int idCategorie;
private String desigProduit;
private Double puProduit;
private Integer qteProduit;
private String configProduit;
private String marqueProduit;
private String modeleProduit;

public Produit() {
}

public int getIdProduit() {


return this.idProduit;
}

public void setIdProduit(int idProduit) {


this.idProduit = idProduit;
}

public String getDesigProduit() {


return this.desigProduit;
}

public void setDesigProduit(String desigProduit) {


this.desigProduit = desigProduit;
}
public Double getPuProduit() {
return this.puProduit;
}

public void setPuProduit(Double puProduit) {


this.puProduit = puProduit;
}
public Integer getQteProduit() {
return this.qteProduit;
}

public void setQteProduit(Integer qteProduit) {


this.qteProduit = qteProduit;
}
public String getConfigProduit() {
return this.configProduit;
}

public void setConfigProduit(String configProduit) {


this.configProduit = configProduit;
}
public String getMarqueProduit() {
return this.marqueProduit;
}

public void setMarqueProduit(String marqueProduit) {


this.marqueProduit = marqueProduit;
}
public String getModeleProduit() {
return this.modeleProduit;
}

public void setModeleProduit(String modeleProduit) {


this.modeleProduit = modeleProduit;
}

public int getIdCategorie() {


return idCategorie;
}

public void setIdCategorie(int idCategorie) {


this.idCategorie = idCategorie;
}

Voici le code java d’une interface Dao (ProduitDao)

package tn.rnu.isi.dao;

import java.util.Date;
import java.math.BigDecimal;
import java.io.Serializable;

import tn.rnu.isi.beans.Produit;

public interface ProduitDao {


/**
* Insérer une nouvelle Ligne dans la table Produit.
* @param bean
* @throws Exception
*/
public void insert(Produit bean) throws Exception;
/**
* Mettre à jour une ligne dans la table Produit.
* @param bean
* @param IdProduit
* @throws Exception
*/
public void update(Produit bean, int IdProduit) throws Exception;
/**
* Supprimer une ligne de la table Produit.
* @param IdProduit
* @throws Exception
*/
public void delete(int IdProduit) throws Exception;
/**
* Recherche par Clé Primaire
*/
public Produit findByPrimaryKey(int idProduit) throws Exception ;
/**
* findAll
* @return
* @throws Exception
*/
public Produit[] findAll() throws Exception;

Voici un extrait de l'implémentation (Dao_impl) de cette interface (ProduitDao_impl)

package tn.rnu.isi.dao_impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.ArrayList;

import tn.rnu.isi.beans.Produit;
import tn.rnu.isi.dao.ProduitDao;

/**
*
* @author ZEDDINI
*/
public class ProduitDao_Impl implements ProduitDao{

protected java.sql.Connection userConnection;

/**
* insert
* @param entity
* @throws Exception
*/
public void insert(Produit bean) throws Exception {
long t1 = System.currentTimeMillis();

Connection conn = null;


PreparedStatement stmt = null;
ResultSet rs = null;

try {

if (userConnection != null) {
conn = userConnection;
} else {
conn = ResourceManager.getConnection();
}

String SQL_INSERT = "INSERT INTO produit ( id_produit,


id_categ, desig_produit, pu_produit , qte_produit, config_produit ,
marque_produit, modele_produit ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )";

stmt = conn.prepareStatement(SQL_INSERT);

stmt.setInt(1, bean.getIdProduit());
stmt.setInt(2, bean.getIdCategorie());
stmt.setString(3, bean.getDesigProduit());
stmt.setDouble(4, bean.getPuProduit());
stmt.setInt(5, bean.getQteProduit());
stmt.setString(6, bean.getConfigProduit());
stmt.setString(7, bean.getMarqueProduit());
stmt.setString(8, bean.getModeleProduit());

int rows = stmt.executeUpdate();

System.out.println("Executing " + SQL_INSERT + " ...");


long t2 = System.currentTimeMillis();
System.out.println(rows + " rows affected (" + (t2 - t1) + "
ms)");

} catch (Exception _e) {


_e.printStackTrace();
throw new Exception("Exception: " + _e.getMessage(), _e);
} finally {
ResourceManager.close(stmt);
if (userConnection == null) {
ResourceManager.close(conn);
}

/**
* update
* @param bean
* @param IdProduit
* @throws Exception
*/
public void update(Produit bean, int IdProduit) throws Exception {
long t1 = System.currentTimeMillis();

Connection conn = null;


PreparedStatement stmt = null;
ResultSet rs = null;
try {

if (userConnection != null) {
conn = userConnection;
} else {
conn = ResourceManager.getConnection();
}

String SQL_UPDATE = "UPDATE produit SET id_produit = ?,


id_categ = ?, desig_produit= ?, pu_produit = ?, qte_produit= ?,
config_produit = ?, marque_produit = ?, modele_produit = ? WHERE
id_produit = ?";
stmt = conn.prepareStatement(SQL_UPDATE);

stmt.setInt(1, bean.getIdProduit());
stmt.setInt(2, bean.getIdCategorie());
stmt.setString(3, bean.getDesigProduit());
stmt.setDouble(4, bean.getPuProduit());
stmt.setInt(5, bean.getQteProduit());
stmt.setString(6, bean.getConfigProduit());
stmt.setString(7, bean.getMarqueProduit());
stmt.setString(8, bean.getModeleProduit());

stmt.setInt(9, IdProduit);

stmt.executeUpdate();

System.out.println("Executing " + SQL_UPDATE + " ...");


int rows = stmt.executeUpdate();
long t2 = System.currentTimeMillis();
System.out.println(rows + " rows updated (" + (t2 - t1) + "
ms)");

} catch (Exception _e) {


_e.printStackTrace();
throw new Exception("Exception: " + _e.getMessage(), _e);
} finally {
ResourceManager.close(stmt);
if (userConnection == null) {
ResourceManager.close(conn);
}

public void delete(int IdProduit) throws Exception {


long t1 = System.currentTimeMillis();

Connection conn = null;


PreparedStatement stmt = null;
ResultSet rs = null;

try {

if (userConnection != null) {
conn = userConnection;
} else {
conn = ResourceManager.getConnection();
}

String SQL_DELETE = "DELETE FROM produit WHERE id_produit =


?";

stmt = conn.prepareStatement(SQL_DELETE);

stmt.setInt(1, IdProduit);

stmt.executeUpdate();

System.out.println("Executing " + SQL_DELETE + " ...");


int rows = stmt.executeUpdate();
long t2 = System.currentTimeMillis();
System.out.println(rows + " rows deleted (" + (t2 - t1) + "
ms)");

} catch (Exception _e) {


_e.printStackTrace();
throw new Exception("Exception: " + _e.getMessage(), _e);
} finally {
ResourceManager.close(stmt);
if (userConnection == null) {
ResourceManager.close(conn);
}

/**
* findAll
* @return
* @throws Exception
*/
public Produit[] findAll() throws Exception {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
if (userConnection != null) {
conn = userConnection;
} else {
conn = ResourceManager.getConnection();
}
String SQL_SELECT = "SELECT id_produit, id_categ,
desig_produit, pu_produit , qte_produit, config_produit, marque_produit,
modele_produit FROM produit";

System.out.println("Executing " + SQL_SELECT + " ...");


stmt = conn.prepareStatement(SQL_SELECT);
rs = stmt.executeQuery();
List temp = new ArrayList();
while (rs.next()) {

Produit bean = new Produit();

bean.setIdProduit(rs.getInt(1));
bean.setIdCategorie(rs.getInt(2));
bean.setDesigProduit(rs.getString(3));
bean.setPuProduit(rs.getDouble(4));
bean.setQteProduit(rs.getInt(5));
bean.setConfigProduit(rs.getString(6));
bean.setMarqueProduit(rs.getString(7));
bean.setModeleProduit(rs.getString(8));

temp.add(bean);
}
Produit ret[] = new Produit[temp.size()];
temp.toArray(ret);
System.out.println("Fetched " + ret.length + " rows.");
return ret;

} catch (SQLException sqlException) {


sqlException.printStackTrace();
throw new Exception(sqlException.getMessage());
} finally {
ResourceManager.close(stmt);
if (userConnection == null) {
ResourceManager.close(conn);
}

/**
* findByPrimaryKey
* @param IdProduit
* @return
* @throws Exception
*/
public Produit findByPrimaryKey(int idProduit) throws Exception {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
if (userConnection != null) {
conn = userConnection;
} else {
conn = ResourceManager.getConnection();
}
String SQL_SELECT = "SELECT id_produit, id_categ,
desig_produit,pu_produit
,qte_produit,config_produit,marque_produit,modele_produit FROM produit
WHERE id_produit = ?";

System.out.println("Executing " + SQL_SELECT + " ...");


stmt = conn.prepareStatement(SQL_SELECT);

stmt.setInt(1, idProduit);

rs = stmt.executeQuery();
if (rs.next()) {

Produit bean = new Produit();


bean.setIdProduit(rs.getInt(1));
bean.setIdCategorie(rs.getInt(2));
bean.setDesigProduit(rs.getString(3));
bean.setPuProduit(rs.getDouble(4));
bean.setQteProduit(rs.getInt(5));
bean.setConfigProduit(rs.getString(6));
bean.setMarqueProduit(rs.getString(7));
bean.setModeleProduit(rs.getString(8));

System.out.println("Fetched 1 row.");
return bean;
} else {
System.out.println("Fetched 0 rows.");
return null;
}
} catch (SQLException sqlException) {
sqlException.printStackTrace();
throw new Exception(sqlException.getMessage());
} finally {
ResourceManager.close(stmt);
if (userConnection == null) {
ResourceManager.close(conn);
}

Voici le code java de la classe de connexion ResourceManager

package tn.rnu.isi.dao_impl;

import java.sql.*;

public class ResourceManager


{
private static String JDBC_DRIVER = "org.postgresql.Driver";
private static String JDBC_URL =
"jdbc:postgresql://localhost/BD_SIL04";

private static String JDBC_USER = "zedgres";


private static String JDBC_PASSWORD = "zedgres";

private static Driver driver = null;

public static synchronized Connection getConnection()


throws SQLException
{
if (driver == null)
{
try
{
Class jdbcDriverClass = Class.forName( JDBC_DRIVER );
driver = (Driver) jdbcDriverClass.newInstance();
DriverManager.registerDriver( driver );
}
catch (Exception e)
{
System.out.println( "Failed to initialise JDBC driver" );
e.printStackTrace();
}
}

return DriverManager.getConnection(
JDBC_URL,
JDBC_USER,
JDBC_PASSWORD
);
}

public static void close(Connection conn)


{
try {
if (conn != null) conn.close();
}
catch (SQLException sqle)
{
sqle.printStackTrace();
}
}

public static void close(PreparedStatement stmt)


{
try {
if (stmt != null) stmt.close();
}
catch (SQLException sqle)
{
sqle.printStackTrace();
}
}

public static void close(ResultSet rs)


{
try {
if (rs != null) rs.close();
}
catch (SQLException sqle)
{
sqle.printStackTrace();
}

Voici un exemple de code du MainClass des tests


package tn.rnu.isi;

import tn.rnu.isi.beans.Produit;
import tn.rnu.isi.dao.ProduitDao;
import tn.rnu.isi.dao_impl.ProduitDao_Impl;

public class MainClass {

/**
* @param args
*/
public static void main(String[] args) {
ProduitDao dao = new ProduitDao_Impl();
Produit[] produits;
try {
produits = dao.findAll();
for (int i = 0; i < produits.length; i++) {
System.out.println(" Marque : "
+ produits[i].getMarqueProduit() + "
\n Modele : "
+ produits[i].getModeleProduit());

}
} catch (Exception e) {
e.printStackTrace();
}
}

Vous aimerez peut-être aussi