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 :

Requete insert en MySql


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut Requete insert en MySql
    Bonjour à tous,


    Mon soft en visual 2010 express dialogue avec une base de données créée en local sous PhpMyAdmin.

    J'arrive à effectuer une requete Select sur la base, sans soucis.

    En revanche j'ai un soucis lorsque j'essaye une requete Insert sur cette base. Voici le code associé.

    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
     
    private void util_added(WindowsFormsApplication1.form_addutil.Ident identif)
            {
                // On à récupérer les champs utilisateurs à insérer dans la base
                string ConnectionStr = "Database=aide_au_depannage;Data Source=localhost;User Id=root;Password=''";
     
                Connection.ConnectionString = ConnectionStr;
                Connection.Open();
     
                try
                {
                    // Requete parametrée
                    string Requete = "INSERT INTO identification(ident,mot_de_passe) VALUES (@identifiant,@mdp)";
     
                    // On associe cette requête à la propriété SelectCommand du MySqlDataAdapter
                    MyAdapter.SelectCommand = new MySqlCommand(Requete, Connection);
     
                    //Création et déclaration des paramètres 
                    MyAdapter.SelectCommand.Parameters.Add(new MySqlParameter("@identifiant", MySqlDbType.Char, 30));
                    MyAdapter.SelectCommand.Parameters.Add(new MySqlParameter("@mdp", MySqlDbType.Char, 30));
     
                    //Attribution des valeurs aux paramètres 
                    MyAdapter.SelectCommand.Parameters["@identifiant"].Value = identif.identifiant.ToString();
                    MyAdapter.SelectCommand.Parameters["@mdp"].Value = identif.MdP.ToString();
     
                    MyAdapter.SelectCommand.ExecuteNonQuery();
     
                }
                catch (Exception ex1)
                {
                    TxtBoxMain.AppendText(ex1.Message);
                }
     
                Connection.Close();
     
            }
    Sachant que la structure identif contient deux string que je souhaite insérer récupérés depuis une autre forme.

    L'erreur que j'obtient est la suivante :
    La colonne ident ne peut pas être null.
    En effet lorsque j'ai défini la table, j'ai mis que cette valeur ne pouvait être null.

    Je ne suis pas encore tout a fait à l'aise avec les requetes, et notamment ici les paramétrés donc je ne suis pas certain de ma syntaxe.
    Merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Bonjour,

    si vous mettez un point d'arret apres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyAdapter.SelectCommand.Parameters["@identifiant"].Value = identif.identifiant.ToString();
    Avez vous bien une valeur dans votre paramètre ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut
    Bonjour,


    Oui pardon j'avais oublié de préciser que j'avais débugger en pas à pas justement, parceque je m'étais dit que je lui rentrais une valeur nulle dans la requete mais ce n'est pas le cas les paramètres sont correctement récupérés et mis dans mon dataAdapter...
    J'ai pas précisé non plus qu'il y a une colonne id en auto incrément dans ma table en plus d'ident et de mdp, mais il me semblait que ce n'étais pas nécéssaire de le préciser dans la requete justement. Serait-ce du à cela ?

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Visiblement c'est IDENT qui pose problème, donc je ne pense pas que ça soit lié à l'ID auto incrémenté.

    Je me demande par contre ce qu'il en est de la syntaxe ...
    Entre les différentes bases et les différents providers ils sont pas foutus de respecter les même syntaxes pour les paramètres, essaye pas exemple plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string Requete = "INSERT INTO identification(ident,mot_de_passe) VALUES (?,?)";
    Si ça fonctionne fait une recherche rapide savoir si oui ou non avec ton provider tu peux spécifier le nom des paramètres.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut
    Bon après une bonne heure de fouille de forum et de tout ce que je pouvais essayer sur la syntaxe, la voilà qui fonctionne.

    Je poste au cas où quelqu'un aurait le même problème.

    Merci asmduty d'avoir pris du temps pour moi et m'avoir mis sur la voie.

    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
     
     private void util_added(WindowsFormsApplication1.form_addutil.Ident identif)
            {
                // On à récupérer les champs utilisateurs à insérer dans la base
                string ConnectionStr = "Database=aide_au_depannage;Data Source=localhost;User Id=root;Password=''";
     
                Connection.ConnectionString = ConnectionStr;
                Connection.Open();
     
                try
                {
                    // Requete parametrée
                    string Requete = "INSERT INTO identification(ident,mot_de_passe) VALUES (?ident,?mot_de_passe)";//; select LAST_INSERT_ID() as UserID;";
     
                    // On associe cette requête à la propriété SelectCommand du MySqlDataAdapter
                    MyAdapter.SelectCommand = new MySqlCommand(Requete, Connection);
     
                    //Création et déclaration des paramètres 
                    MySqlParameter myparamident = new MySqlParameter("?ident", MySqlDbType.Char, 30);
                    MySqlParameter myparammdp = new MySqlParameter("?mot_de_passe", MySqlDbType.Char, 30);
     
                    //Attribution des valeurs aux paramètres 
                    myparamident.Value = identif.identifiant;
                    myparammdp.Value = identif.MdP;
     
                    MyAdapter.SelectCommand.Parameters.Add(myparamident);
                    MyAdapter.SelectCommand.Parameters.Add(myparammdp);
     
                    MyAdapter.SelectCommand.ExecuteNonQuery();
     
                }
                catch (Exception ex1)
                {
                    TxtBoxMain.AppendText(ex1.Message);
                }
     
                Connection.Close();
     
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] requete INSERT Mysql
    Par Sergei75 dans le forum Symfony
    Réponses: 1
    Dernier message: 16/01/2012, 20h42
  2. Erreur requete INSERT INTO en java mySQL
    Par ninya dans le forum Débuter
    Réponses: 1
    Dernier message: 08/01/2010, 10h15
  3. [MySQL] Requete insertion BDD mysql
    Par mjs21 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/06/2008, 08h53
  4. [INSERTION DATE] dans requete d'insertion et mysql
    Par vincedjs dans le forum Requêtes
    Réponses: 9
    Dernier message: 03/02/2006, 17h11
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

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