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 illogique requête d'insertion [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut Erreur illogique requête d'insertion
    Bonjour, prière de m'aider à trouver l'erreur, je n'arrive plus a la détecter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    "INSERT INTO [Appelsdoffre] VALUES (@id,..., @AvecPonderation, @FormuleEvaluation, ...)";
     
    myCommand.Parameters.Add(new SqlParameter("@AvecPonderation", SqlDbType.Bit));
    myCommand.Parameters.Add(new SqlParameter("@FormuleEvaluation", SqlDbType.VarChar, -1));
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    myCommand.Parameters.Add(new SqlParameter("@AvecPonderation", SqlDbType.Bit));
                    myCommand.Parameters.Add(new SqlParameter("@FormuleEvaluation", SqlDbType.VarChar, -1));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    myCommand.Parameters["@AvecPonderation"].Value = chkPonderation.CheckState;
     
                    if (chkPonderation.Checked == true)
                        myCommand.Parameters["@FormuleEvaluation"].Value = cmbNT.SelectedItem.ToString() + "NT+" + cmbNF.SelectedItem.ToString() + "NF"; // l'erreur
                    else
                        myCommand.Parameters["@FormuleEvaluation"].Value = DBNull.Value;
    il me dit que impossible de convertir cmbNT.SelectedItem.ToString() + "NT+" + cmbNF.SelectedItem.ToString() + "NF"; en bit alors que FormuleEvaluation est un varchar(MAX)

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Dans notre métier, les erreurs illogiques n'existent pas

    Es-tu sûr que dans "VALUES", toutes les valeurs sont dans le bon ordre? Pour en être sûr, préfère utiliser la syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO table (nom_colonne_1, nom_colonne_2, ...
     VALUES ('valeur 1', 'valeur 2', ...)

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    fais shift+f9 sur myCommand.Parameters["@FormuleEvaluation"] via un point d'arrêt, tu pourras vérifier le type du paramètre

    Citation Envoyé par ZenZiTone Voir le message
    Pour en être sûr, préfère utiliser la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO table (nom_colonne_1, nom_colonne_2, ...
     VALUES ('valeur 1', 'valeur 2', ...)
    ca serait moi qui ferait les règles du forum, je mettrais une semaine d'expulsion pour conseil de concaténation de paramètre
    surtout que l'ordre des paramètres n'importe pas sur les vrais sgbdr vu qu'il utilise le nom (sur access par contre il prend dans l'ordre et ca peut faire n'importe quoi)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    ca serait moi qui ferait les règles du forum, je mettrais une semaine d'expulsion pour conseil de concaténation de paramètre
    surtout que l'ordre des paramètres n'importe pas sur les vrais sgbdr vu qu'il utilise le nom (sur access par contre il prend dans l'ordre et ca peut faire n'importe quoi)
    ? Si tu ne précises pas le nom des colonnes, l'ordre des paramètres importe... Ou alors il faudra m'expliquer comment il s'en sort pour affecter les bonnes valeurs aux bonnes colonnes !

  5. #5
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Est-tu sûr que "myCommand.Parameters["@FormuleEvaluation"].Value" correspond bien à ton paramètre @FormuleEvaluation ?

    J'avoue que je ne gère jamais mes paramètres de cette manière, donc pas certain que l'accesseur pointe bien sur le nom.

    Habituellement je fais :
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SqlParameter parFormuleEvaluation = new SqlParameter("@FormuleEvaluation", SqlDbType.VarChar, -1);
    myCommand.Parameters.Add(parFormuleEvaluation);
     
    // [...]
     
    parFormuleEvaluation.Value = string.Concat(cmbNT.SelectedItem, "NT+", cmbNF.SelectedItem, "NF");

    Accessoirement, ce sera plus rapide puisque je conserver un pointeur sur chacun de mes paramètres et donc je ne passe pas par un accesseur itératif à chaque appel à un des paramètres.

    Bon, après, c'est vrai que c'est un peu plus verbeux.

  6. #6
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    Merci pour vos aides :
    quand j'ai rectifié ma requête comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1
    2
    INSERT INTO table (nom_colonne_1, nom_colonne_2, ...
     VALUES ('valeur 1', 'valeur 2', ...)
    ça a marché

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    Citation Envoyé par ZenZiTone Voir le message
    ? Si tu ne précises pas le nom des colonnes, l'ordre des paramètres importe... Ou alors il faudra m'expliquer comment il s'en sort pour affecter les bonnes valeurs aux bonnes colonnes !
    au temps pour moi je n'avais pu qu'il ne précisait pas le nom des colonnes
    c'est surtout les 'value 1' concaténé dans la requête qui est déconseillé
    et puis le problème est avant l'exécution de la requête à priori, et bien sur le parameter
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. [SQL] erreur sur requête insert
    Par temperature dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/01/2008, 15h27
  2. Erreur sur ma requête d'insertion
    Par souminet dans le forum Bases de données
    Réponses: 14
    Dernier message: 09/01/2008, 09h29
  3. [MySQL] Erreur dans la requête d'insertion
    Par paradeofphp dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/11/2006, 16h06
  4. erreur requête d'insertion
    Par zapatta dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 09/08/2006, 17h18
  5. [PHP MySQL] Erreur execution requête de type INSERT
    Par Pfeffer dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2006, 17h38

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