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

MS SQL Server Discussion :

Debuguer une requete parametree


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    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
    Par défaut Debuguer une requete parametree
    Bonjour

    Cela fait un bout de temps que j'essaye de comprendre une erreur dans une commande update

    J'ai deja verifié 100 fois ma commandes et mes parametres sans comprendre

    Question
    1- Peut on definir plus de parametre que ceux que la commande doit utiliser ?
    2- Il y a-t-il un truc pour comprendre plus facilement ce qui se passe ?


    Merci aux experts qui peuvent m'aider

    Voici l'erreur

    {System.Data.SqlClient.SqlException: The parameterized query '(@HRK nvarchar(10),@HRKreel nvarchar(4000),@imei nvarchar(15),@p' expects the parameter '@dateVerif', which was not supplied.
    un truc louche c'est
    @HRKreel nvarchar(4000),
    Car c'est défini comme nvarchar(16) dans la db
    Et ca vaut "" dans la classe


    Voici la commande
    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
        private bool UpdateToDB()
        {
          SqlCommand MyCmd = new SqlCommand();
     
          string strSQL = "UPDATE PAPreprise SET "
                        + " HRK=@HRK, "
                        + " HRKreel=@HRKreel, "
                        + " imei=@imei, "
                        + " prixreprise=@prixreprise, "
                        + " prixreel=@prixreel, "
                        + " prix_hs=@prix_hs, "
                        + " prix_occasion=@prix_occasion, "
                        + " dateReprise=@dateReprise, "
                        + " dateImport=@dateImport, "
                        + " dateVerif=@dateVerif, "
                        + " etatreprise= @etatreprise, "
                        + " etatreel=@etatreel, "
                        + " refinternal=@refinternal, "
                        + " refclient=@refclient, "
                        + " srcFile=@srcFile, "
                        + " outFile=@outFile, "
                        + " outDate=@outDate "
                        + " WHERE ID={0}";
     
          MyCmd.CommandText = string.Format(strSQL,this.ID);
          AddParams(MyCmd);
          return Query.NonQueryCmd(MyCmd);
    Voici l'ajout de parametres
    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
        // *********************************************************************************
        private void AddParams(SqlCommand MyCmd)
        {
          MyCmd.Parameters.AddWithValue("@HRK", this.HRK);
          MyCmd.Parameters.AddWithValue("@HRKreel", this.HRKreel);
          MyCmd.Parameters.AddWithValue("@imei", this.imei);
          MyCmd.Parameters.AddWithValue("@prixreprise", this.prixReprise);
          MyCmd.Parameters.AddWithValue("@prixreel", this.prixReel);
          MyCmd.Parameters.AddWithValue("@prix_hs", this.prix_hs);
          MyCmd.Parameters.AddWithValue("@prix_occasion", this.prix_occasion);
          MyCmd.Parameters.AddWithValue("@dateReprise", this.dateReprise);
          MyCmd.Parameters.AddWithValue("@dateImport", this.dateImport);
          MyCmd.Parameters.AddWithValue("@dateVerif", this.dateVerif);
          MyCmd.Parameters.AddWithValue("@etatReprise", this.etatReprise);
          MyCmd.Parameters.AddWithValue("@etatreel", this.etatReel);
          MyCmd.Parameters.AddWithValue("@refinternal", this.refInternal);
          MyCmd.Parameters.AddWithValue("@refclient", this.refClient);
          MyCmd.Parameters.AddWithValue("@srcFile", this.srcFile);
          MyCmd.Parameters.AddWithValue("@outFile", this.outFile);
          MyCmd.Parameters.AddWithValue("@outDate", this.outDate);
        }

  2. #2
    Membre expérimenté
    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
    Par défaut
    Bonjour

    A force de contorsions cérébrales, j'ai fini par trouver le problème

    La DB allow des DateTime null
    J'avais bien défini des DateTime nullable !

    Par contre la valeur null n'est pas digérée dans les parametres

    Si dateVerif est null, je dois donner la valeur DBNull.Value et non pas null !
    Pour la cause j'ai du ecrire une petite methode qui fait le test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          MyCmd.Parameters.AddWithValue("@dateVerif", ToolsCvt.AddParamDate(this.dateVerif));

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vous auriez pu trouver la chaîne de requête à l'aide du Profiler, en filtrant sur le SPID de votre session qui se trouve affiché en bas à droite de SSMS.

    Le plus simple reste encore d'écrire la procédure stockée appropriée à votre traitement, pour les raisons que j'énumère ici

    @++

Discussions similaires

  1. [XL-2007] Executer une requete parametree dans Access 2007
    Par jppeltier dans le forum Excel
    Réponses: 10
    Dernier message: 27/07/2012, 10h11
  2. Export Ecxel d'une requete parametree
    Par Chikatilo dans le forum VBA Access
    Réponses: 7
    Dernier message: 14/08/2008, 14h00
  3. créer une requête paramétrée en VBA
    Par bigboy dans le forum VBA Access
    Réponses: 11
    Dernier message: 26/11/2006, 18h26
  4. Réponses: 5
    Dernier message: 04/05/2006, 21h02
  5. Exporter une requête paramétrée
    Par Al soltani dans le forum Access
    Réponses: 2
    Dernier message: 20/04/2006, 14h15

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