Esempio n. 1
0
 /// <summary>
 /// Retourne une liste d'objet du type T de la base de données à partir de la requête spécifiée.
 /// </summary>
 /// <param name="query">
 /// Requête SELECT permettant de sélectionner les enregistrements.
 /// </param>
 /// <returns>
 /// Retoune une liste d'objet du type T spécifié correspondant aux enregistrements de la base de données.
 /// </returns>
 public static List <T> LoadAll(String query)
 {
     try
     {
         using (MySqlConnection conn = new MySqlConnection(_conn_str))
             using (MySqlDataAdapter data_adapter = new MySqlDataAdapter(query, conn))
             {
                 T         obj;
                 List <T>  list_obj   = new List <T>();
                 DataTable data_table = new DataTable();
                 data_adapter.Fill(data_table);
                 foreach (DataRow data_row in data_table.Rows)
                 {
                     obj = new T();
                     SetObjectValues(obj, data_row);
                     list_obj.Add(obj);
                 }
                 return(list_obj);
             }
     }
     catch (Exception ex)
     {
         ExHandler.Parse(ex, query);
         return(null);
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Retourne un objet du type T de la base de données à partir de la requête spécifiée.
        /// </summary>
        /// <param name="query">
        /// Requête SELECT permettant de sélectionner un enregistrement.
        /// </param>
        /// <returns>
        /// Retourne un objet du type T spécifié correspondant à un enregistrement de la base de données ou null si
        /// aucun enregistrement n'a été trouvé.
        /// </returns>
        public static T Load(String query)
        {
            try
            {
                using (MySqlConnection conn = new MySqlConnection(_conn_str))
                    using (MySqlDataAdapter data_adapter = new MySqlDataAdapter(query, conn))
                    {
                        DataTable data_table = new DataTable();
                        data_adapter.Fill(data_table);
                        switch (data_table.Rows.Count)
                        {
                        case 1:
                            T obj = new T();
                            SetObjectValues(obj, data_table.Rows[0]);
                            return(obj);

                        case 0:
                            return(null);

                        default:
                            throw new UnmanagedException("La requête SELECT utilisée a retournée plus d'un enregistrement.");
                        }
                    }
            }
            catch (Exception ex)
            {
                ExHandler.Parse(ex, query);
                return(null);
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Insère un enregistrement du type T de la base de données avec l'objet spécifié.
 /// </summary>
 /// <param name="obj">
 /// Objet contenant les donnée de l'enregistement à insérer.
 /// </param>
 /// <param name="query">
 /// Requête SELECT permettant de sélectionner la table où les données seront insérées. La
 /// sélection peut ne retourner aucun résultat. C'est la sélection de celle-ci qui importe.
 /// </param>
 /// <returns>
 /// Retourne le ID de la clé primaire du nouvel l'enregistrement. Si l'enregistrement n'a
 /// pas été ajouté ou s'il n'y a pas de ID auto-incrémenté la valeur retournée est 0.
 /// </returns>
 public static UInt32 Insert(T obj, String query)
 {
     try
     {
         using (MySqlConnection conn = new MySqlConnection(_conn_str))
             using (MySqlDataAdapter data_adapter = new MySqlDataAdapter(query, conn))
                 using (MySqlCommandBuilder cmd_builder = new MySqlCommandBuilder(data_adapter))
                 {
                     UInt32    ret_id     = 0;
                     DataTable data_table = new DataTable();
                     data_adapter.InsertCommand = cmd_builder.GetInsertCommand();
                     data_adapter.Fill(data_table);
                     DataRow data_row = data_table.NewRow();
                     SetDataRowValues(data_row, obj);
                     data_table.Rows.Add(data_row);
                     if (data_adapter.Update(data_table) == 1)
                     {
                         ret_id = Convert.ToUInt32(data_adapter.InsertCommand.LastInsertedId);
                     }
                     return(ret_id);
                 }
     }
     catch (Exception ex)
     {
         ExHandler.Parse(ex, query);
         return(0);
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Met à jour un enregistrement du type T de la base de données avec l'objet spécifié.
        /// </summary>
        /// <param name="obj">
        /// Objet contenant les donnée de l'enregistement à mettre à jour.
        /// </param>
        /// <param name="query">
        /// Requête SELECT permettant de sélectionner l'enregistrement à mettre à jour.
        /// </param>
        /// <returns>
        /// Retourne true si l'enregistrement a été mis à jour ou false dans le cas contraire.
        /// </returns>
        public static bool Update(T obj, String query)
        {
            try
            {
                using (MySqlConnection conn = new MySqlConnection(_conn_str))
                    using (MySqlDataAdapter data_adapter = new MySqlDataAdapter(query, conn))
                        using (MySqlCommandBuilder cmd_builder = new MySqlCommandBuilder(data_adapter))
                        {
                            DataTable data_table = new DataTable();
                            data_adapter.Fill(data_table);
                            switch (data_table.Rows.Count)
                            {
                            case 1:
                                SetDataRowValues(data_table.Rows[0], obj);
                                return(data_adapter.Update(data_table) == 1);

                            case 0:
                                return(false);

                            default:
                                throw new UnmanagedException("La requête SELECT utilisée a retournée plus d'un enregistrement.");
                            }
                        }
            }
            catch (Exception ex)
            {
                ExHandler.Parse(ex, query);
                return(false);
            }
        }
Esempio n. 5
0
        protected void ButtonConnect_Click(object sender, EventArgs e)
        {
            try
            {
                Employee emp = ConnectionBll.LoadEmployee(TextBoxCode.Text);
                if (emp == null)
                {
                    TextBoxCode.Text        = "";
                    TextBoxPassword.Text    = "";
                    LabelCodeError.Text     = "Code d'utilisateur invalide.";
                    LabelPasswordError.Text = "";
                }
                else if (!ConnectionBll.ValidatePassword(TextBoxPassword.Text, emp.emp_pw))
                {
                    TextBoxPassword.Text    = "";
                    LabelCodeError.Text     = "";
                    LabelPasswordError.Text = "Mot de passe invalide.";
                }
                else
                {
                    Session["logged"] = emp;
                    Session["role"]   = ConnectionBll.GetRoleName(emp.rol_id);
                    switch ((String)Session["role"])
                    {
                    case "admin":
                        Response.Redirect("~/RoleAdmin/WelcomeView.aspx", false);
                        break;

                    case "feed":
                        Response.Redirect("~/RoleFeed/WelcomeView.aspx", false);
                        break;

                    case "stock":
                        Response.Redirect("~/RoleStock/WelcomeView.aspx", false);
                        break;

                    case "supplier":
                        Response.Redirect("~/RoleSupplier/WelcomeView.aspx", false);
                        break;

                    default:
                        Response.Redirect("~/LogoutView.aspx");      // ici il serait préférable d'afficher une page d'erreur "Role inexistant".
                        break;
                    }
                }
            }
            catch (ManagedException ex)
            {
                String msg = String.Format("alert(\"{0}\");", ex.Message);
                Utils.DisplayMessage(this, msg);
            }
            catch (Exception ex)
            {
                ExHandler.Parse(ex, null);
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Supprime le ou les enregistrements sélectionnés par la requête SQL. Cette suppression
        /// est fait avec une transaction pour assurer l'intégrité des données en cas de problèmes.
        /// Si une exception est déclenchée un rollback est fait pour ne rien modifier.
        /// </summary>
        /// <param name="queries">
        /// Tableau de requête DELETE permettant de sélectionner le ou les enregistrements à
        /// supprimer. Les requêtes sont exécutées dans l'ordre où elle sont dans le tableau
        /// ce qui est important lors de la suppression de données dans des tables master/detail.
        /// </param>
        public static void Delete(String[] queries)
        {
            MySqlConnection  conn  = null;
            MySqlTransaction trans = null;
            MySqlCommand     cmd   = null;

            try
            {
                conn = new MySqlConnection(_conn_str);
                conn.Open();
                trans = conn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);
                cmd   = conn.CreateCommand();
                foreach (String query in queries)
                {
                    cmd.CommandText = query;
                    cmd.ExecuteNonQuery();
                }
                trans.Commit();
            }
            catch (Exception ex)
            {
                if (trans != null)
                {
                    trans.Rollback();
                }
                ExHandler.Parse(ex, String.Join(" | ", queries));
                return;
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (trans != null)
                {
                    trans.Dispose();
                }
                if (conn != null)
                {
                    conn.Dispose();
                }
            }
        }