Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Déclarer un tableau multi dimensionnel

utilisation de MySql.NET

Sujet résolu
    30 juin 2011 à 17:00:12

    Bonjour à tous et à toutes :)

    Je suis actuellement en train d'utiliser le connecteur MySql.net qui me permet d'accèder aux bases de données de type MySql.
    Pour cela je suis entrain de créer une classe qui permet de gérer la connexion et les requêtes.

    Voici ma classe actuelle :


    class Database
        {
            private MySqlConnection connection;
    
            public Database()
            {
                this.Init();
            }
    
            public void Select(string query)
            {
                if (this.OpenConnection() == true)
                {
                    MySqlCommand cmd = new MySqlCommand(query, connection);
                    MySqlDataReader dataReader = cmd.ExecuteReader();
    
                    while (dataReader.Read())
                    {
                        // affectation de la variable de retour
                    }
    
                    dataReader.Close();
                    this.CloseConnection();
    
                    // Cette ligne devra retourner la variable de retour
                }
                else
                {
                    // Cette ligne devra retourner la variable de retour mais vide
                }
            }
    
            private void Init()
            {
                string server = "localhost";
                string database = "test";
                string uid = "root";
                string password = "";
                string connectionString;
                connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
    
                connection = new MySqlConnection(connectionString);
            }
    
            private bool OpenConnection()
            {
                try
                {
                    connection.Open();
                    return true;
                }
                catch (MySqlException ex)
                {
                    switch (ex.Number)
                    {
                        case 0:
                            MessageBox.Show("Connexion impossible au serveur MySql");
                            break;
    
                        case 1045:
                            MessageBox.Show("Combinaison Username/Password invalide");
                            break;
                    }
                    return false;
                }
            }
    
            private bool CloseConnection()
            {
                try
                {
                    connection.Close();
                    return true;
                }
                catch (MySqlException ex)
                {
                    MessageBox.Show(ex.Message);
                    return false;
                }
            }
        }
    



    Donc son utilisation est simple, lorsqu'on crée l'objet de la base de donnée, celui ci va automatiquement initialiser la chaine de connexion avec les données de connexion. Simple.

    Ensuite j'ai deux méthodes qui me permettent de me connecter et déconnecter retournant un bool en fonction de leur réussite. Simple.

    Maintenant le plus compliqué pour moi, la fonction Select avec paramètre la requête.
    Je voudrais retourner un tableau de cette façon, comme le PHP le permet :

    <?php
    $retour = array();
    
    // Première ligne
    $retour[]["table_id"] = 1;
    $retour[]["table_champ"] = "Toto";
    $retour[]["table_autrechamp"] = 50;
    
    // Deuxième ligne
    $retour[]["table_id"] = 2;
    $retour[]["table_champ"] = "Tata";
    $retour[]["table_autrechamp"] = 80;
    ?>
    


    Ainsi en C# je voudrais récupérer les valeurs de cette façon :
    Sachant que les textBox est enfaite une TreeView mais le principe reste le même.

    foreach (string item in retour)
    {
      textBox1.Text = item["table_id"];
      textBox2.Text = item["table_champ"];
      textBox3.Text = item["table_autrechamp"];
    }
    


    D'après mes renseignements, je devrais utiliser les ArrayList et même le Dictionnaire (Dictionnary) afin d'avoir les clé de type string et non en int.
    Cette affectation se fait à la ligne 19 de ma classe Database, donc il faut que sa tienne dans cette boucle.

    OU sinon,
    si vous connaissez une bibliothèque permettant de manipuler les base de données de cette aisance :)

    Merci de pouvoir m'aider :)

    EDIT : Sujet résolu, je change de méthode car trop compliqué.
    Ma fonction Select retournera le MySqlDataReader et je le traite au moment de la requête pour l'utiliser comme je le souhaite.
    • Partager sur Facebook
    • Partager sur Twitter
      3 juillet 2011 à 1:00:02

      Pour info, CSharp permet de créer des indexeurs paramétrés.

      Tu peux alors créer une classe Data qui contient tous les éléments de ton objet, puis créer un indexeur acceptant une string en paramètre, et retournant la valeur de l'attribut correspondant à la chaine passée en paramètre de l'objet.

      La syntaxe pour déclarer un indexeur est la suivante :

      public static string this[string s]
              {
                  //Code
              }
      


      Sinon, il existe deux types de tableaux multidimensionnels :
      • - les tableaux à deux dimensions
      • - les tableaux de tableaux


      Voici un bou de code qui devrait te permettre de comprendre leur fonctionnement et de discerner la différence entre les deux ;)

      namespace ConsoleApplication1
      {
          class Program
          {
              // Constantes de longueur
              private const int length1 = 4, length2 = 5;
      
              // Exemple de tableau à deux dimensions
              int[,] tab2dim;
      
              // Exemple de tableau de tableaux
              int[][] tab2tab;
      
              void Main(string[] args)
              {
                  // Initialisation du tableau à deux dimension
                  tab2dim = new int[length1, length2];
      
                  // Initialisation du tableau de tableaux
                  tab2tab = new int[length1][];
                  for (int i = 0; i < length1; ++i)
                      tab2tab[i] = new int[length2];
              }
          }
      }
      


      Bonsoir
      • Partager sur Facebook
      • Partager sur Twitter
        3 juillet 2011 à 10:28:33

        Merci pour ta réponse :)
        Cela vraiment m'aider par la suite :)
        • Partager sur Facebook
        • Partager sur Twitter
          3 juillet 2011 à 11:51:03

          Je t'en prie :)
          Bonne journée
          • Partager sur Facebook
          • Partager sur Twitter

          [C#] Déclarer un tableau multi dimensionnel

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown