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

C# Discussion :

Erreur lors de l'insert dans une BDD MySQL


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Points : 18
    Points
    18
    Par défaut Erreur lors de l'insert dans une BDD MySQL
    Bonjour,

    Je vous explique vite fais le problème :

    A partir d'une table donnée, je souhaite récuperer tout les attributs d'une colonne, afin de me permettre de faire un Insert avec les valeurs récupérées, dans une autre table.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
     
    string MyConString = "SERVER=localhost;" + "DATABASE=nom.de.base;" + "UID=root;" + "PASSWORD=;";
     
    Private void btt_test_click (object sender, EventArgs e)
    {
     
         MySqlConnection mySqlCnx = new MySqlConnection (MyConString);
         MySqlCommand mySqlcommand = new MySqlCommand ();
         MySqlDataReader mysqldr;
     
         try 
         {
                mySqlCnx.Open();
                mySqlCommand.Connection = mySqlCnx;
                mySqlCommand.CommandType = commandType.Text;
                mySqlCommand.CommandText = "SELECT (id_poste) AS Poste FROM postesource";
                mySqldr = mySqlcommand.ExecuteReader();
     
                while (mySqldr.Read())
     
                   {
                       MySqlCommand command = mySqlCnx.CreateCommand();
                       command.CommandText = "INSERT INTO concerner (id_concerner, id_ordre, id_poste) VALUES ('1', '" + mySqldr["Poste"].ToString() + "','2')";
                       command1.ExecuteNonQuery();
     
                    }
     
       catch (MySqlException Ex) 
       {
              MessageBox.Show(Ex.ToString());
       }
     
    }
    Lors de l'exécution de ce code le message d'erreur qui m'ai renvoyé est le suivant :


    MySql.Data.MySQLClient.MySqlException : There is already an open DATAReader associated with this Connection which must be closed first.
    Mais lorsque je ferme la connexion associé au datareader, il n'y a que un seul passage dans ma boucle while, alors que j'en aurais une dizaine a faire.

    Quelqu'un pourrait-il m'aider svp?

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    ca ne va pas t'expliquer pourquoi ton code bug mais il y a plus simple
    en effet tu ramènes des données dans ton programme une par une pour les réinjecter dans la base une par une


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insert into table  (ch1, ch2)
       select table.tch1, autrevaleur from table
    ca fait la même chose en plus simple et beaucoup plus rapide

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Points : 18
    Points
    18
    Par défaut
    Ok merci, je vais regardé ça de plus près alors!

  4. #4
    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
    Ceci m'interpelle dans to code

    D'ou sort command1 ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                       MySqlCommand command = mySqlCnx.CreateCommand();
                       command.CommandText = "INSERT INTO concerner (id_concerner, id_ordre, id_poste) VALUES ('1', '" + mySqldr["Poste"].ToString() + "','2')";
                       command1.ExecuteNonQuery();

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2006
    Messages : 30
    Points : 98
    Points
    98
    Par défaut
    Il faut disposer ton DataReader une fois que tu as fini avec.

Discussions similaires

  1. [MySQL] insertion dans une bdd mysql
    Par billben dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/03/2013, 15h32
  2. insertion dans une BDD MySQL en java
    Par Sanaa25 dans le forum Général Java
    Réponses: 2
    Dernier message: 08/03/2010, 13h43
  3. [MySQL] encodage lors d'une insertion dans une BDD Mysql
    Par Halex78 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/11/2008, 14h54
  4. Récupération message d'erreur lors d'une insertion dans une BDD
    Par LoDev dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 22/12/2007, 20h11

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