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 :

message d'erreur erreurSystem.NullReferenceException


Sujet :

C#

  1. #1
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut message d'erreur erreurSystem.NullReferenceException
    Voila j'ai l'erreur suivante et je ne vois pas trop ou chercher l'erreur
    A first chance exception of type 'System.NullReferenceException' occurred in BackupRestor.exe
    erreurSystem.NullReferenceException: Object reference not set to an instance of an object.
    at EZOS.BACKUPRESTORE.DOTNET.Class1.GetIdFichier(String chemin) in D:\Cédric\Projet\Projet 08 Avril 2008\Scruter\Class1.cs:line 186
    quand je vais voir la ligne j'ai la méthode getidfichier qui reçoit un chemin et renvoye un entier

    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
    public int GetIdFichier(string chemin)
            {
                SqlConnection myConnection = new SqlConnection(connectionString);
                SqlCommand myCommand = myConnection.CreateCommand();
                try
                {
                    myConnection.Open();
                    myCommand.CommandText = "GetIdFichier";
                    myCommand.CommandType = CommandType.StoredProcedure;
                    Console.WriteLine(chemin);
     
                    SqlParameter FichierPath = new SqlParameter();
                    FichierPath.ParameterName = "@FichierPath";
                    FichierPath.SqlDbType = SqlDbType.VarChar;
                    FichierPath.Value = chemin;
                    myCommand.Parameters.Add(FichierPath);
    (ln 186)    int count = (int)myCommand.ExecuteScalar();
                    return count;
                }
     
                catch (Exception ex)
                {
                    Console.WriteLine("erreur" + ex);
                    MessageBox.Show("erreur" + ex);
                    return 0;
                }
                finally
                {
                    myConnection.Close();          
                }
            }
    j'ai regardé ma procédure stocké getidfichier

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go



    ALTER PROCEDURE [dbo].[GetIdFichier]
    @FichierPath varchar(1024)
    AS
    SELECT FichierId
    From Fichiers AS F
    WHERE NOT EXISTS (select FichierId
    From ModificationFichiers AS MF
    Where (F.FichierId = FichierId) and (TypeModification = 4))


    and F.FichierPath= @FichierPath
    Rien me semble incorrect, Car il fait ce que je lui demande.

    L'application backup restore, regarde les fichier d'un dossier , si il sont modifier, avec filesystemwatcher fait les evenement approprié , pour voir quel fichier est modifié j'appel ma méthode getidfichier pour récuperer l'id du fichier et l'inserer dans la db table modifier.

    Qqun aurait une ou des idées ? merci d'avance

  2. #2
    Membre expérimenté Avatar de gwadakillah
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 235
    Par défaut
    La méthode ExecuteScalar exécute la requête et retourne la première colonne de la première ligne du jeu de résultats retourné par la requête. Les colonnes ou lignes supplémentaires sont ignorées donc te retourne un objet et comme tu essayes après de le caster.
    Si ta requête ne retourne pas d'élément, tu essayes de caster un NULL ce qui est impossible .
    Essayes plutot : ExecuteNonQuery qui lui te retourne le nombre de lignes affectées.. et enlèves le cast car cette méthode te retourne un int. :p

  3. #3
    Membre expérimenté Avatar de gwadakillah
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 235
    Par défaut
    oups j'ai rien dit, tu veux récupérer la valeur de ton objet
    ben dans ce cas la, vérifies si ton objet n'est pas null avant de le caster.

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (ln 186)    int count = (int)myCommand.ExecuteScalar();
    Essaye ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int? count = (int?)myCommand.ExecuteScalar();

  5. #5
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    quand je fait ce que tu dis, il me mets

    Cannot implicitly convert type 'int?' to 'int'. An explicit conversion exists (are you missing a cast?)

  6. #6
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    J'ai enlever return count et j'ai mis return 27 (id du fichier 27)

    et la aucune erreur quand je modifier le fichier

  7. #7
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    Mais maintenant faudrais savoir pourquoi? et pouvoir renvoyer l'id du fichier modifier?

    Que dois je faire?

    Merci

  8. #8
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Retourne un int? au lieu d'un int

    Tu pourra tester si la valeur retournée sera null ou un entier.

  9. #9
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    il y a pas une autre possibilité?

    Car en fait faut que je change pas mal de chose qui depende de ce Int

  10. #10
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Bah sinon faut que tu teste si l'objet renvoyé est null avant de faire une assignation ou pas.

    Ou alors peut être un TryParse

  11. #11
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    oky ca marche avec if, Mais je ne comprend pas trop pourquoi myCommand.ExecuteScalar() retournerais une valeur null, je vais regarder sur le net si je trouve pas une petite expliquation

    J'ai oublié de vous dire un tout grand merci

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

Discussions similaires

  1. [TSocket] Message d'erreur
    Par rgz dans le forum Web & réseau
    Réponses: 6
    Dernier message: 04/07/2003, 09h16
  2. Surcharger le message d'erreur après un OnException
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 24/04/2003, 11h42
  3. Réponses: 4
    Dernier message: 04/03/2003, 01h05
  4. [CR] Message d'erreur
    Par nono1 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 11/09/2002, 14h54
  5. Réponses: 2
    Dernier message: 27/05/2002, 19h46

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