IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Mysqlcommand dans une boucle


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 323
    Points : 128
    Points
    128
    Par défaut Mysqlcommand dans une boucle
    Bonjour à tous.
    Je souhaite mettre dans une boucle une commande de type MySQLDriverCS.MySQLCommand

    L'intéret serait de parcourir une table, de prendre le résultat et de le traiter. Mais problème : j'ai toujours le même résultat. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    MySQLDriverCS.MySQLCommand cmd2 = new MySQLDriverCS.MySQLCommand();
                cmd2.Connection = conn;
     
                for (int i = 136; i < nb_date_naiss; i++)
                {
                    cmd2.CommandText = "SELECT DATE_NAISSANCE_CLIENT FROM client WHERE ID_CLIENT=" + i;
                    MessageBox.Show("" + cmd2.CommandText);
                    date_naiss = (string)cmd2.ExecuteScalar();
                    MessageBox.Show("i = " + i + "date naissance = " + date_naiss);
                    datenaiss = date_naiss.Substring(6);
     
     
    ....
    }
    Je pense me noyer dans un verre d'eau..
    "MessageBox.Show("" + cmd2.CommandText);" m'affiche à chaque fois la bonne requete :
    SELECT DATE_NAISSANCE_CLIENT FROM client WHERE ID_CLIENT=136, puis
    SELECT DATE_NAISSANCE_CLIENT FROM client WHERE ID_CLIENT=137 ect...

    par contre le deuxieme :
    MessageBox.Show("i = " + i + "date naissance = " + date_naiss);
    m'affiche le bon i (136,137....) mais toujours la meme date de nassance.

    Si vous avez une idée de mon erreur, je suis preneur; )

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 323
    Points : 128
    Points
    128
    Par défaut
    j'UP encore une fois le topic pour montrer mon avancement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //connexion...
     
    MySQLDriverCS.MySQLCommand cmd2 = new MySQLDriverCS.MySQLCommand();
                    cmd2.Connection = conn2;
     
                    cmd2.CommandText = "SELECT DATE_NAISSANCE_CLIENT FROM client WHERE ID_CLIENT=" + i;
     
                    date_naiss = (string)cmd2.ExecuteScalar();
                    MessageBox.Show("" + date_naiss + " " + date_naiss.Length);
                    cmd2.Dispose();
                    conn2.Close();
     
                    if (date_naiss.Length != 10)
                    { }
                    else
                    {
    //traitement....
    cmd2.Dispose() me permet d'avoir la date les 4 premieres fois. Par contre, à l

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut
    On pourrait chercher le pourquoi du comment mais pour faire ce que tu veux, il me semble beaucoup plus sain est simple de passer par une datatable et d'effectuer un query unique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string sel="SELECT DATE_NAISSANCE_CLIENT FROM client WHERE ID_CLIENT<{0}",nb_date_naiss);

    Moi je me suis fait une petite classe Wrapper pour la cause

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
      class Query
      {
        public MySqlConnection getConn()
        {
          // TODO utiliser un setting propre !! (et figuré)
          string DB = "RecutexDB";
     
          string connect=string.Format(Environ.ConnectionString,DB);
     
          MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
          conn.ConnectionString = connect;
          return conn;
        }
        // ***********************************************************************************
        public DataTable selectX(string SelectCmd)
        {
     
          MySqlConnection conn = getConn();
          if (conn == null)
          {
            return null;
          }
     
          try
          {
            conn.Open();
          }
          catch (MySqlException e)
          {
            MessageBox.Show(e.Message);
            return null;
          }
     
          MySqlDataAdapter ada = new MySqlDataAdapter();
     
          DataSet ds = null;
          try
          {
            ada.SelectCommand = new MySqlCommand(SelectCmd, conn);
            ds = new DataSet();
            ada.Fill(ds);
          }
          catch (MySqlException e)
          {
            MessageBox.Show(e.Message);
            conn.Close();
            return null;
          }
     
          conn.Close();
          return ds.Tables[0];
        }
    }
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

Discussions similaires

  1. [langage] incrementation de variable dans une boucle
    Par mimilou dans le forum Langage
    Réponses: 15
    Dernier message: 16/04/2004, 14h23
  2. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 11h19
  3. swf dans une boucle asp
    Par Chucky69 dans le forum Flash
    Réponses: 11
    Dernier message: 10/02/2004, 18h07
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 15h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo