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

Accès aux données Discussion :

NuLL Reference Exception


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 30
    Points
    30
    Par défaut NuLL Reference Exception
    bonjour tous le monde ,
    voila un bout de code de mon programme :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    public static void Main()
        {
     
            trame oTrame = new trame();
            ITrame trameDAO = new TrameDAO();
     
            try
            {
                // Create an instance of StreamReader to read from a file.
                // The using statement also closes the StreamReader.
                using (StreamReader sr = new StreamReader("trame.txt"))
                {
                    String line;
                    // Read and display lines from the file until the end of
                    // the file is reached.
                    while ((line = sr.ReadLine()) != null)
                    {
                        Console.WriteLine(line);
                        char[] sep = new Char[] { ',' };
                        string[] tab = line.Split(sep, 15);
                        if (tab[0].Equals("$GPRMC"))
                        {
                            Console.WriteLine("La trame est  bien reçue");
     
                               oTrame.type_trame = tab[0];
                           oTrame.id_boitier = 1;
                            oTrame.heure = tab[1];
                             oTrame.validite = tab[2];
     
     
                            oTrame.latitude = float.Parse(tab[3].Replace(".",","));
     
                            oTrame.sens_latitude = tab[4];
                            oTrame.longitude = float.Parse(tab[5].Replace(".",","));
                           oTrame.sens_longitude = tab[6];
                         oTrame.vitesse = float.Parse(tab[7].Replace(".",","));
                         oTrame.cap = float.Parse(tab[8].Replace(".",","));
                         string sDate = tab[9];
                         System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture;
     
                         DateTime.ParseExact(sDate, "ddMMyy", provider);
     
                         Console.WriteLine(oTrame.date);
                         oTrame.checksum = tab[10];
                            try
                            {trameDAO.AjouterTrame(oTrame);
     
                         }
                         catch (Exception e)
                         {
     
                             Console.WriteLine(e.Message);
                         }
     
     
                        }
                        else
                        {
                            Console.WriteLine("La trame est erronnée");
                        }
    j'ai l'erreur suivante la reference d'objet n'est pas definit à une instance d'objet !!! alors que l'instance oTrame a récupere tous ces attributs???
    sinon pour y voir plus clair
    voila le code de la classe trameDao(acces a la base de donnee sql server) (j'utilise linq to sql )
    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
    40
    41
    42
    43
    44
     
    public class TrameDAO : ITrame
        {
     
           private static  DataClassesDataContext db;
     
     
            #region Constructeur
     
            public TrameDAO()
            {
                try
                {
                    ConnectionStringSettings settings;
                    settings = ConfigurationManager.ConnectionStrings["Gestion_flotteConnectionString1"];
                    db = new DataClassesDataContext(settings.ConnectionString);
                }
                catch (NullReferenceException) { }
     
            }
            #endregion
     
            #region CRUD
            public bool AjouterTrame(trame oTrame)
            {
                ChangeSet changeset = null;
                    int changeCount = 0;
     
     
     
                        db.trame.InsertOnSubmit(oTrame);
     
                        changeset = db.GetChangeSet();
     
                       changeCount = changeset.Inserts.Count;
     
                        db.SubmitChanges();
     
     
               if (changeCount > 0) { return true; }
     
               else { return false; }
     
            }
    voila , si vous avez des propositions???
    Merci

  2. #2
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    Salut,
    1) A quelle ligne exactement l'erreur apparaît-elle ? pour moi, ça serait le champ statique "db" de la classe TrameDAO qui serait 'null'. Seulement, comme tu catches l'exception sans rien faire, au moment de son affectation (ce qui est à bannir, la preuve), tu ne t'en rends pas compte sur le coup.
    2) la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DateTime.ParseExact(sDate, "ddMMyy", provider);
    ne sert strictement à rien ; tu dois affecter le résultat à une variable de type DateTime :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DateTime dt = DateTime.ParseExact(sDate, "ddMMyy", provider);

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    j'avais oublié la ligne
    oTrame.date = datetime.parse(....);
    l'erreur est géneré dans la ligne : trameDAO.Ajouter(oTrame);
    soit dans la methode Ajouter(trame oTrame) de la classe TrameDAO!!
    et je vois pas où est le problème?

  4. #4
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    on s'est croisés, j'ai édité mon post précédent.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    et comment je peux résoudre le problème??
    Déja comme le db serait-il null??

  6. #6
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    Mets un point d'arrêt sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    db = new DataClassesDataContext(settings.ConnectionString);
    pour vérifier si c'est bien ça ; il y a peut-être un problème dans le constructeur de DataClassesDataContext

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    voila le new code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     public TrameDAO()
            {
                try
                {
                    ConnectionStringSettings settings;
                    settings = ConfigurationManager.ConnectionStrings["Gestion_flotteConnectionString1"];
                    db = new DataClassesDataContext(settings.ConnectionString);
                }
                catch (NullReferenceException e) { Console.WriteLine(e.Message); }
     
            }
    et vous aviez raison , c'est le db qui est null mais je comprends pas pourquoi??

  8. #8
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    et est-ce que "settings" ne serait pas null ? Si tel est le cas essaie d'utiliser plutôt la syntaxe fortement typée (du genre "Properties.Settings.MyConnectionString") en la mettant dans le fichier Settings de l'appli

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    désoléé mais j'ai pas bien saisi ce que je dois faire??
    je dois remplacé le settings ??
    NB : ce meme constructeur marche pour d'autre classe, mais dans un projet siteweb !!! c'est bizarre!!

  10. #10
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    est-ce que, arrivé sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    db = new DataClassesDataContext(settings.ConnectionString);
    la variable "settings" est bien valorisée, donc non 'null' ?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    j'ai utilisé le constructeur db = new DataClassesDataContext( );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public DataClassesDataContext() : 
    				base(global::entities.Properties.Settings.Default.Gestion_flotteConnectionString, mappingSource)
    		{
    			OnCreated();
    		}
     
    		public DataClassesDataContext(string connection) : 
    				base(connection, mappingSource)
    		{
    			OnCreated();
    		}
    et ca marche , toutefois l'ajout ne marche pas !!!!

  12. #12
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Merci pour ton aide !!
    maintenant ça tourne

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

Discussions similaires

  1. Null Reference Exception
    Par saxophtrion dans le forum VB.NET
    Réponses: 8
    Dernier message: 16/05/2012, 15h55
  2. Une Null Reference Exception
    Par Vivien57 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/05/2011, 17h29
  3. Null reference exception
    Par xavpiaf dans le forum ASP.NET
    Réponses: 5
    Dernier message: 05/05/2008, 09h37
  4. [2.0] Null Reference Exception
    Par franculo_caoulene dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/03/2008, 16h58
  5. Null Reference Exception
    Par mischa dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/06/2007, 11h59

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