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 :

Problème avec la requête insert


Sujet :

C#

  1. #1
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Par défaut Problème avec la requête insert
    Bonjour,
    J'ai un petit souci lors de l’exécution de ma requête 'INSERT'.
    j'ai une requête qui enregistre tout les valeurs de mon formulaire dans ma base de données,le problème c'est que des fois l'utilisateur n'est pas obligé de rentré tout les valeurs dans le formulaire,si c''est le cas une exception s’affiche indiquant :
    Erreur de format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    string strRequete1 =
          "INSERT INTO Electrical_braking_Data([Nom_Machine],[Référence],[Tension nominale stator Ueff(V)],[courant nominal stator],[Xd en per unit],[résistance par phase à 75°C],[résistance additionnelle],[pertes Joule stator à In])VALUES(@nom,@id,@idi1,@idi2,@idi3,@idi4,@idi5,@idi6)";
      SqlCommand oCommand1 = new SqlCommand(strRequete1, oConnection);
     oCommand1.Parameters["@nom"].Value = richTextBox248.Text;
                       oCommand1.Parameters["@id"].Value = listBox1.Text;
                       oCommand1.Parameters["@idi1"].Value = Convert.ToDouble(richTextBox37.Text);
                       oCommand1.Parameters["@idi2"].Value = Convert.ToDouble(richTextBox38.Text);
                       oCommand1.Parameters["@idi3"].Value = Convert.ToDouble(richTextBox39.Text);
                       oCommand1.Parameters["@idi4"].Value = Convert.ToDouble(richTextBox40.Text);
                       oCommand1.Parameters["@idi5"].Value = Convert.ToDouble(richTextBox41.Text);
                       oCommand1.Parameters["@idi6"].Value = Convert.ToDouble(richTextBox52.Text);
      oCommand1.ExecuteNonQuery();

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2009
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 229
    Par défaut
    essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    com.Parameters.Add("@id1", System.Data.SqlDbType.Double);
    com.Parameters[0].Value = nom;
    pareil pour les autres ...

  3. #3
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bnj,

    Je pense qu'il faut que tu distingue entre les valeurs obligatoires et les facultatives pour la base de données et aussi il faut que tu sache exactement les formats de chaque donnée (numérique, chaine de caractères).

    Ensuite si à toi de jouer dans le code behind ou le designer pour mettre des validateurs ou des expressions régulières pour filtrer, formater et passer les bonnes et correctes valeurs avant d’appeler la requête insert.

    Bon courage

  4. #4
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Par défaut
    Citation Envoyé par aguetat Voir le message
    essaye ça :

    com.Parameters.Add("@id1", System.Data.SqlDbType.Double);
    com.Parameters[0].Value = nom;

    pareil pour les autres ...
    Moi je fais comme cela et pourtant j'ai ce problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Command.Parameters.Add(new SqlParameter("@id2", SqlDbType.VarChar));

  5. #5
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Par défaut
    J'ai oublié de poster tt le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      oCommand1.Parameters.Add(new SqlParameter("@nom", SqlDbType.VarChar));
                       oCommand1.Parameters.Add(new SqlParameter("@id", SqlDbType.VarChar));
                       oCommand1.Parameters.Add(new SqlParameter("@idi1", SqlDbType.Float));
                       oCommand1.Parameters.Add(new SqlParameter("@idi2", SqlDbType.Float));
                       oCommand1.Parameters.Add(new SqlParameter("@idi3", SqlDbType.Float));
                       oCommand1.Parameters.Add(new SqlParameter("@idi4", SqlDbType.Float));
                       oCommand1.Parameters.Add(new SqlParameter("@idi5", SqlDbType.Float));
                       oCommand1.Parameters.Add(new SqlParameter("@idi6", SqlDbType.Float));

  6. #6
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Par défaut
    Citation Envoyé par Redouane Voir le message
    Bnj,

    Je pense qu'il faut que tu distingue entre les valeurs obligatoires et les facultatives pour la base de données et aussi il faut que tu sache exactement les formats de chaque donnée (numérique, chaine de caractères).

    Ensuite si à toi de jouer dans le code behind ou le designer pour mettre des validateurs ou des expressions régulières pour filtrer, formater et passer les bonnes et correctes valeurs avant d’appeler la requête insert.

    Bon courage
    En faites j'ai pas de valeurs obligatoire de ma forms,l'utilisateurs et libre de rentrer tout les valeurs ou juste quelques un.
    Je ne sais pas vraiment comment faire!!

  7. #7
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    et dans ta base de données, les champs acceptent des valeurs par défaut ?

    Parceque, si oui et si l'utilisateur est libre de saisir n'importe quoi, tu peux avant d'entrer les données, les traiter comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(String.IsNullOrEmpty(richTextBox37.Text))
       TonParametre = ValuerParDefaut;  // 0 par exemple
    Ou bien, vérifier si c'est bien un double ou non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Double number;
      if(Double.TryParse(richTextBox37.Text, out number))
           // Inserer number dans ta requete
      else
          // Inserer valeur par défaut ds ta requete
    Pour plus d'infos :

    http://msdn.microsoft.com/en-us/library/994c0zb1.aspx

    http://www.codeproject.com/KB/cs/IsNumeric.aspx

    Autre chose, dans des applications asp.net, on peux utiliser ajax par exemple pour forcer l'utilisateur à entrer des entiers, des numerics au lieu des chaines de caracteres et d'autres trucs aussi.

    Bonne courage

  8. #8
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Par défaut
    Merci pour votre réponse,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(String.IsNullOrEmpty(richTextBox37.Text))
       TonParametre = ValuerParDefaut;  // 0 par exemple
    mais comme j'ai une centaine de textbox je craignais qu'on fin de compte je n'aille que cette solution .je vous cache pas j'ai penser à le faire mais j'ai hésiter parce que je trouver que c'était trop long.mais si j'ai pas d'autre choix je me lancerai sur cette solution

  9. #9
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Bonjour,

    Tu dis que tu obtiens l'erreur "Erreur de format", cela n'est pas dû pour moi à ta requête mais au Convert.ToDouble.

    Tu dis que l'utilisateur peut ne rien saisir, eh bien l'erreur obtenue correspond à Convert.ToDouble(""), et un convert de rien ça fait une erreur !

    Donc dans le cas où l'utilisateur n'a rien saisi, il faut donner la valeur DBNull au paramètre correspondant, pas besoin de gérer ici des valeurs par défaut.

  10. #10
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Par défaut
    Ok ok ça marche. Merci pour vos réponses

  11. #11
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Citation Envoyé par kensem Voir le message
    Ok ok ça marche. Merci pour vos réponses
    Et peux-tu communiquer la solution que tu as mis en place ?

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

Discussions similaires

  1. Problème avec une requête INSERT (sqlserver2005)
    Par jacko842 dans le forum Développement
    Réponses: 2
    Dernier message: 21/03/2012, 10h09
  2. problème avec la requête insert
    Par kensem dans le forum Développement
    Réponses: 2
    Dernier message: 06/12/2010, 15h52
  3. [MySQL] problème avec la requête insert
    Par mohcine- dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/09/2007, 08h26
  4. [VB.NET/Access] Problème avec une requête d'insertion
    Par Bladinou dans le forum Accès aux données
    Réponses: 8
    Dernier message: 29/05/2007, 18h06
  5. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45

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