/// <summary> /// Augmenter ou diminuer tous les prix /// </summary> /// <param name="pourcentage"></param> public static void ModifierPrix(String pourcentage) { DataTable dt; sErreurs err = new sErreurs("", ""); String mysql; try { /* * Code SQL de création de la procédure stockée : CREATE PROCEDURE `modifier_prix` ( IN `pourcentage` INT ) COMMENT 'Augmenter ou diminuer les prix d''un pourcentage.' NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER BEGIN UPDATE articles SET prix_art = prix_art * ( 1 + pourcentage /100 ); END */ // appel de la procédure stockée mysql = "CALL modifier_prix(" + pourcentage + ");"; dt = DbInterface.Lecture(mysql, err); } catch (MonException erreur) { throw erreur; } }
public List<Commande> getLesCommandes(String tri, String ordre) { DataTable dt; String mysql = "SELECT NO_COMMAND, NO_VENDEUR, NO_CLIENT, DATE_CDE, FACTURE "; mysql += "FROM COMMANDES "; mysql += "ORDER BY " + tri + " " + ordre; sErreurs er = new sErreurs("Erreur sur lecture des commandes", "Commande.getLesCommandes()"); try { dt = DbInterface.Lecture(mysql, er); List<Commande> mesCdes = new List<Commande>(); foreach (DataRow dataRow in dt.Rows) { Vendeur unvd = new Vendeur(); unvd.NoVendeur = dataRow[1].ToString(); Clientel uncli = new Clientel(); uncli.NoCl = dataRow[2].ToString(); Commande unecde = new Commande(dataRow[0].ToString(), ((DateTime)dataRow[3]), dataRow[4].ToString(), unvd, uncli); mesCdes.Add(unecde); } return mesCdes; } catch (MonException erreur) { throw erreur; } }
public List<DetailsCde> getDetailsCde(String noCmd) { DataTable dt; sErreurs err = new sErreurs("", ""); //MySqlConnection cnx = Connexion.getInstance().getConnexion(); String mysql = "SELECT articles.*, detail_cde.QTE_CDEE, detail_cde.LIVREE " +"FROM articles, detail_cde "+"WHERE detail_cde.NO_COMMAND = " + noCmd + " AND articles.NO_ARTICLE = detail_cde.NO_ARTICLE " + "ORDER BY NO_ARTICLE ASC"; Console.Write(mysql); try { dt = DbInterface.Lecture(mysql, err); List<DetailsCde> mesDetails = new List<DetailsCde>(); foreach (DataRow dataRow in dt.Rows) { Article unart = new Article(); unart.No_article = dataRow[0].ToString(); unart.Lib_article = dataRow[1].ToString(); unart.Qte_dispo = dataRow[2].ToString(); unart.Ville_art = dataRow[3].ToString(); unart.Prix_art = dataRow[4].ToString(); unart.Interrompu = dataRow[5].ToString(); DetailsCde unDetail = new DetailsCde(unart, dataRow[6].ToString(), dataRow[7].ToString()); mesDetails.Add(unDetail); } return mesDetails; } catch (MonException erreur) { throw erreur; } }
private static bool ModifierPrixHelper(String pourcentage, bool procedure_ok) { DataTable dt; sErreurs err = new sErreurs("", ""); String mysql; try { /* * Code SQL de création de la procédure stockée : CREATE PROCEDURE `modifier_prix` ( IN `pourcentage` INT ) COMMENT 'Augmenter ou diminuer les prix d''un pourcentage.' NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER BEGIN UPDATE articles SET prix_art = prix_art * ( 1 + pourcentage /100 ); END */ if (procedure_ok) { // appel de la procédure stockée mysql = "CALL modifier_prix(" + pourcentage + ");"; } else { // mais si la procédure n'existe pas ... mysql = "UPDATE articles SET prix_art = prix_art * ( 1 + "+pourcentage+" /100 );"; } dt = DbInterface.Lecture(mysql, err); } catch (MonException erreur) { if (procedure_ok) { return ModifierPrixHelper(pourcentage, false); // On réessaie sans la procédure stockée } // Une erreur ne concernant pas la procedure stockée a été rencontrée erreur.MsgUtilisateur += "Une erreur est intervenue lors de la mise à jour des prix des articles "; throw erreur; } return true; }
/// <summary> /// Exécution de la requête demandée en paramètre, req, /// et retour du resultat : un DataTable /// Si tout se passe bien la connexion est prête à être fermée /// par le client qui utilisera cette connexion /// </summary> /// <param name="req">RequêteMySql à exécuter</param> /// <returns></returns> public static DataTable Lecture(String req, sErreurs er) { MySqlConnection cnx = null; try { cnx = Connexion.getInstance().getConnexion(); MySqlCommand cmd = new MySqlCommand(); cmd.Connection = cnx; cmd.CommandText = req; MySqlDataAdapter da = new MySqlDataAdapter(); da.SelectCommand = cmd; // Construire le DataSet DataSet ds = new DataSet(); da.Fill(ds, "resultat"); cnx.Close(); // Retourner la table return (ds.Tables["resultat"]); } catch (MonException me) { throw (me); } catch (Exception e) { throw new MonException(er.MessageUtilisateur(), er.MessageApplication(), e.Message); } finally { // S'il y a eu un problème, la connexion // peut être encore ouverte, dans ce cas // il faut la fermer. if (cnx != null) cnx.Close(); } }
public void suppCmd(int[] noCmd) { DataTable dt; sErreurs err = new sErreurs("", ""); try { for (int i= 0;i < noCmd.Length; i++) { String mysql1 = "DELETE FROM detail_cde WHERE NO_COMMAND = " + noCmd[i]; dt = DbInterface.Lecture(mysql1, err); String mysql2 = "DELETE FROM commandes WHERE NO_COMMAND = " + noCmd[i]; dt = DbInterface.Lecture(mysql2, err); } } catch (MonException erreur) { throw erreur; } }
public void ajouterCommande() { DataTable dt; sErreurs err = new sErreurs("", ""); String mysql; try { // enregistrer les détails de l'article mysql = "INSERT INTO COMMANDES (NO_COMMAND, NO_CLIENT, NO_VENDEUR, FACTURE, DATE_CDE) VALUES ('"; mysql += this.noCommande; mysql += "', '"; mysql += this.client.NoCl; mysql += "', '"; mysql += this.vendeur.NoVendeur; mysql += "', '"; mysql += this.facture; mysql += "', '"; mysql += this.dateCommande.ToString("yyyy-MM-dd"); mysql += "');"; dt = DbInterface.Lecture(mysql, err); } catch (MonException erreur) { throw erreur; } }
/// <summary> /// Modifier les informations de la commande dans la base de données /// </summary> public void modifierCommande() { DataTable dt; sErreurs err = new sErreurs("", ""); String mysql; try { // actualiser les infoamtions dans la base mysql = "UPDATE COMMANDES SET NO_VENDEUR = '"; mysql += this.Vendeur.NoVendeur; mysql += "', NO_CLIENT = '"; mysql += this.Client.NoCl; mysql += "', DATE_CDE = '"; mysql += this.dateCommande.ToString("yyyy-MM-dd"); mysql += "', FACTURE = '"; mysql += this.facture; mysql += "' WHERE NO_COMMAND = '" + this.noCommande + "';"; dt = DbInterface.Lecture(mysql, err); } catch (MonException erreur) { throw erreur; } }
/// <summary> /// Cherhcer les informations d'un vendeur d'après son numéro /// </summary> /// <param name="numVen"></param> /// <returns></returns> public Vendeur RechercheUnVendeur(String numVen) { String mysql; DataTable dt; sErreurs er = new sErreurs("Erreur sur recherche d'un vendeur.", "Vendeur.RechercheUnVendeur()"); try { mysql = "SELECT NO_VEND_CHEF_EQ, NOM_VEND, PRENOM_VEND,"; mysql += "DATE_EMBAU, VILLE_VEND, SALAIRE_VEND, COMMISSION "; mysql += "FROM VENDEUR WHERE NO_VENDEUR='" + numVen + "'"; dt = DbInterface.Lecture(mysql, er); if (dt.IsInitialized) { DataRow dataRow = dt.Rows[0]; this.noVendeur = numVen; this.noChef = dataRow[0].ToString(); this.nomVend = dataRow[1].ToString(); this.prenomVend = dataRow[2].ToString(); this.dateEmbau = Fonctions.StringToDate(dataRow[3].ToString()); this.villeVend = dataRow[4].ToString(); this.salaireVend = double.Parse(dataRow[5].ToString()); this.commission = double.Parse(dataRow[6].ToString()); return this; } else return null; } catch (MySqlException e) { throw new MonException(er.MessageUtilisateur(), er.MessageApplication(), e.Message); } }
/// <summary> /// Ajouter l'article courant dans la base de données /// </summary> public void ajouterArticle() { DataTable dt; sErreurs err = new sErreurs("", ""); String mysql; try { // enregistrer les détails de l'article mysql = "INSERT INTO ARTICLES (NO_ARTICLE, LIB_ARTICLE, QTE_DISPO, VILLE_ART, PRIX_ART, INTERROMPU) VALUES ('"; mysql += this.no_article; mysql += "', '"; mysql += this.lib_article; mysql += "', '"; mysql += this.qte_dispo; mysql += "', '"; mysql += this.ville_art; mysql += "', '"; mysql += this.prix_art; mysql += "', '"; mysql += this.interrompu; mysql += "');"; dt = DbInterface.Lecture(mysql, err); } catch (MonException erreur) { throw erreur; } }
/// <summary> /// Lire un utilisateur sur son ID /// </summary> /// <param name="numCli">N° de l'utilisateur à lire</param> public Clientel RechercheUnClient(String numCli) { String mysql; DataTable dt; sErreurs er = new sErreurs("Erreur sur recherche d'un client.", "Client.RechercheUnClient()"); try { mysql = "SELECT SOCIETE, NOM_CL, PRENOM_CL,"; mysql += "ADRESSE_CL, VILLE_CL, CODE_POST_CL "; mysql += "FROM CLIENTEL WHERE NO_CLIENT='" + numCli + "'"; dt = DbInterface.Lecture(mysql, er); if (dt.IsInitialized) { DataRow dataRow = dt.Rows[0]; this.noClient = numCli; this.nomCl = dataRow[1].ToString(); this.societe = dataRow[0].ToString(); this.prenomCl = dataRow[2].ToString(); this.adresseCl = dataRow[3].ToString(); this.villeCl = dataRow[4].ToString(); this.codePostCl = dataRow[5].ToString(); return this; } else return null; } catch (MySqlException e) { throw new MonException(er.MessageUtilisateur(), er.MessageApplication(), e.Message); } }
/// <summary> /// Rechercher un article d'après son numéro /// </summary> /// <param name="no_cmd">Numéro de l'article</param> /// <returns>article courante</returns> public Article RechercheArticle(String no_art) { String mysql; DataTable dt; sErreurs er = new sErreurs("Erreur sur recherche d'un article.", "Article.RechercheArticle()"); try { mysql = "SELECT NO_ARTICLE, LIB_ARTICLE, QTE_DISPO, VILLE_ART, PRIX_ART, INTERROMPU "; mysql += "FROM ARTICLES "; mysql += "WHERE NO_ARTICLE = '" + no_art + "'"; dt = DbInterface.Lecture(mysql, er); if (dt.IsInitialized) { DataRow dataRow = dt.Rows[0]; this.no_article = dataRow[0].ToString(); this.lib_article = dataRow[1].ToString(); this.qte_dispo = dataRow[2].ToString(); this.ville_art = dataRow[3].ToString(); this.prix_art = dataRow[4].ToString(); this.interrompu = dataRow[5].ToString(); return this; } else return null; } catch (MySqlException e) { throw new MonException(er.MessageUtilisateur(), er.MessageApplication(), e.Message); } }
/// <summary> /// Modifier les informations de l'article courant dans la base de données /// </summary> public void modifierArticle() { DataTable dt; sErreurs err = new sErreurs("", ""); String mysql; try { // actualiser les infoamtions dans la base mysql = "UPDATE ARTICLES SET LIB_ARTICLE = '"; mysql += this.lib_article; mysql += "', QTE_DISPO = '"; mysql += this.qte_dispo; mysql += "', VILLE_ART = '"; mysql += this.ville_art; mysql += "', PRIX_ART = '"; mysql += this.prix_art; mysql += "', INTERROMPU = '"; mysql += this.interrompu; mysql += "' WHERE NO_ARTICLE = '" + this.no_article + "';"; dt = DbInterface.Lecture(mysql, err); } catch (MonException erreur) { throw erreur; } }
/// <summary> /// Ajouter l'article courant dans la base de données /// </summary> public void ajouterArticle() { DataTable dt; sErreurs err = new sErreurs("", ""); String mysql; try { mysql = "INSERT INTO ARTICLES (NO_ARTICLE, LIB_ARTICLE, QTE_DISPO, VILLE_ART, PRIX_ART, INTERROMPU) VALUES ('" + "', '" + this.lib_article+"', '"+this.qte_dispo+ "', '"+this.ville_art+"', '"+this.prix_art+"', '"+this.interrompu +"');"; dt = DbInterface.Lecture(mysql, err); } catch (MonException erreur) { throw erreur; } }
/// <summary> /// Récupérer la liste des articles /// </summary> /// <param name="tri">champ de tri</param> /// <param name="ordre">sens du tri</param> /// <returns>lste d'articles</returns> public List<Article> getLesArticles(String tri = "NO_ARTICLE", String ordre = "ASC") { DataTable dt; sErreurs err = new sErreurs("", ""); //MySqlConnection cnx = Connexion.getInstance().getConnexion(); String mysql = "SELECT NO_ARTICLE, LIB_ARTICLE, QTE_DISPO, VILLE_ART, PRIX_ART, INTERROMPU "; mysql += "FROM ARTICLES "; mysql += "ORDER BY " + tri + " " + ordre; try { dt = DbInterface.Lecture(mysql, err); List<Article> mesArt = new List<Article>(); foreach (DataRow dataRow in dt.Rows) { Article unart = new Article(); unart.no_article = dataRow[0].ToString(); unart.lib_article = dataRow[1].ToString(); unart.qte_dispo = dataRow[2].ToString(); unart.ville_art = dataRow[3].ToString(); unart.prix_art = dataRow[4].ToString(); unart.interrompu = dataRow[5].ToString(); mesArt.Add(unart); } return mesArt; } catch (MonException erreur) { throw erreur; } }
/// <summary> /// Lister les clients de la base /// </summary> /// <returns>Liste de numéros de clients</returns> public List<String> LectureNoClient() { List<String> mesNumeros = new List<String>(); DataTable dt; sErreurs er = new sErreurs("Erreur sur lecture du client.", "Clientel.LectureNoClient()"); try { String mysql = "SELECT DISTINCT NO_CLIENT FROM CLIENTEL ORDER BY NO_CLIENT"; dt = DbInterface.Lecture(mysql, er); foreach (DataRow dataRow in dt.Rows) { mesNumeros.Add((dataRow[0]).ToString()); } return mesNumeros; } catch (MySqlException e) { throw new MonException(er.MessageUtilisateur(), er.MessageApplication(), e.Message); } }
public void ajouterCommande() { DataTable dataTable; sErreurs err = new sErreurs("", ""); String mysqlInsertion; try { // enregistrer les détails de l'article mysqlInsertion = "insert into commandes (NO_COMMAND, NO_CLIENT, NO_VENDEUR, FACTURE, DATE_CDE) values ('"; mysqlInsertion += this.noCommande + "','"; mysqlInsertion += this.client.NoCl + "','"; mysqlInsertion += this.vendeur.NoVendeur + "','"; mysqlInsertion += this.facture + "','"; mysqlInsertion += this.dateCommande.ToString("yyyy-MM-dd") + "');"; dataTable = DbInterface.Lecture(mysqlInsertion, err); } catch (MonException erreur) { throw erreur; } }
public void supprimerCommande(int numeroCommande) { DataTable dataTable; sErreurs err = new sErreurs("" , ""); try { String mysql1 = "delete from detail_cde where NO_COMMAND=" + numeroCommande; String mysql2 = "delete from commandes where NO_COMMAND=" + numeroCommande; dataTable = DbInterface.Lecture(mysql1, err); dataTable = DbInterface.Lecture(mysql2, err); } catch (MonException erreur) { throw erreur; } }
/// <summary> /// Utilitaire permettant d'augmenter ou de diminuer tous les prix des articles /// </summary> /// <param name="pourcentage"></param> /// <param name="procedure_ok">Indique si une erreur est intervenue ou non lors de l'execution de la requète</param> private static bool AugmenterPrixHelper(String pourcentage, bool procedure_ok) { DataTable dt; sErreurs err = new sErreurs("", ""); String mysql; try { /* * Code SQL de création de la procédure stockée : CREATE DEFINER=`root`@`localhost` PROCEDURE articles_augm_prix(IN augmente DOUBLE) BEGIN DECLARE done INT DEFAULT 0; #Permet de controler si on est arrivé à la fin du curseur DECLARE var_no CHAR(6); DECLARE var_prix DECIMAL(8,2); DECLARE curseur1 CURSOR FOR SELECT NO_ARTICLE, PRIX_ART FROM ARTICLES; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN curseur1; # ouverture du curseur1 REPEAT FETCH curseur1 INTO var_no, var_prix; IF done = 0 THEN SET var_prix:= var_prix * augmente; UPDATE ARTICLES SET PRIX_ART = var_prix WHERE NO_ARTICLE = var_no; END IF; UNTIL done END REPEAT; CLOSE curseur1; # fermeture du curseur1 END */ if (procedure_ok) { // appel de la procédure stockée mysql = "CALL articles_augm_prix(1 + " + pourcentage + " / 100 );"; } else { // mais si la procédure n'existe pas mysql = "UPDATE articles SET prix_art = prix_art * ( 1 + "+pourcentage+" /100 );"; } dt = DbInterface.Lecture(mysql, err); } catch (MonException erreur) { if (procedure_ok) { return AugmenterPrixHelper(pourcentage, false); // On réessaie sans la procédure stockée } // Une erreur ne concernant pas la procedure stockée a été rencontrée erreur.MsgUtilisateur += "Une erreur est intervenue lors de la mise à jour des prix des articles "; throw erreur; } return true; }