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 :

référence d'objet n'est pas définie à une instance d'un objet


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut référence d'objet n'est pas définie à une instance d'un objet
    Bonjour,

    J'ai eu cette erreur :
    La référence d'objet n'est pas définie à une instance d'un objet

    J'ai bien compris que cela se produisant lorsque l'on avait pas instancié l'objet avant...Mias pourtant j'ai bien l'impression de l'avoir fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     DataSet ds_bus_stop = a.getDataSet("SELECT `ID_BUS_STOP`,`LAT`,`LNG` FROM `bus_stop` WHERE LAT BETWEEN " + lower_lat_string + " AND " + higher_lat_string + " AND LNG BETWEEN " + lower_lng_string + " AND " + higher_lng_string + " ORDER BY `LNG`");
    a est un champ privé de ma classe

    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
     AccessBDD a = new AccessBDD();
            
    
            //Connection to the database
            try
            {
                a.connect();
            }
            catch (Exception e)
            {
                Console.WriteLine("{0} Exception caught.", e);
            }
    
            DataSet ds_total_bus_stop = a.getDataSet("SELECT count(*) FROM `bus_stop`");//ici ca marche

    J'ai voulu rajouté un bout de code juste avant le premier bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
            {
                a.connect();
            }
            catch (Exception e)
            {
                Console.WriteLine("{0} Exception caught.", e);
            }
    et là j'obtiens la même erreur mais géré par le catch()


    Voilà la méthode getDataSet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public DataSet getDataSet(String qry)
    	{
    		DataSet ds = new DataSet();
    		MySqlDataAdapter da = new MySqlDataAdapter(qry,c);
    		da.Fill(ds);
    		return ds;
    	}
    Et voici ma méthode main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    static void Main(string[] args)
            {
                DateTime date = new DateTime(1,1,1,11,23,0);
                Search s1 = new Search("week", 1, date);
                s1.nearestBusStopCoordinatesDep("53,34", "-6,215");
            }
    Voilà .. je ne comprend vraiment pas puisque j'ai déjà procédé de la même manière et que ça a marché ...

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
        a.connect();     // Si c'est là ne cherche pas ailleurs
    }
    catch (Exception e)
    {
        Console.WriteLine("{0} Exception caught.", e);
    }
    Vérifie ta classe AccessBDD, la fonction Connect : je pressens une String de connection à null ou quelque chose du genre.

    Passo

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    comme tu dis, soit ton objet "a" n'est pas instancié, soit l'erreur se trouve dans la méthode connect(). Fais du DEBUG pas à pas et tu te rendras compte qu'il y a un soucis dans ton code à un endroit donné.
    le DEBUG est là pour ca


    ps: pourquoi mettre un try catch uniquement autour du a.connect()? et pas mettre tona.getDataSet dans le try également

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Par défaut
    Houlà! A la première lecture je n'avais pas vu le "ici ça marche" complétement à droite. Du coup, je ne suis plus sûr d'avoir bien compris, quand tu dis
    J'ai voulu rajouté un bout de code juste avant le premier bout de code :
    On est d'accord que ça donne ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    AccessBDD a = new AccessBDD();
    try
    {
     a.connect(); 
    }
    catch (Exception e)
    {
     Console.WriteLine("{0} Exception caught.", e);
    }
    et qu'une exception est lancée?

    OU
    c'est quand tu ajoutes AccessBDD a = new AccessBDD(); que ça marche?

    ET
    ça vient d'où ce 'c' dans
    MySqlDataAdapter da = new MySqlDataAdapter(qry,c);

    Passo

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut
    poru être un peu plus clair :
    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
     
     
    public class Search
    {
    private AccessBDD a;
     
    public Search(String new_day, int new_what, DateTime new_time_of_departure)
    {
        AccessBDD a = new AccessBDD();
        try
        {
            a.connect();
        }
         catch (Exception e)
        {
                Console.WriteLine("{0} Exception caught.", e);
        }
     
    //Cette partie marche !
            DataSet ds_total_bus_stop = a.getDataSet("SELECT count(*) FROM `bus_stop`");
            DataTableReader reader_total_bus_stop = ds_total_bus_stop.CreateDataReader();
     
    }

    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
     
     
     private List<int> nearestBusStopCoordinates(float lat_of_departure, float lng_of_departure,float lower_lat, float higher_lat, float lower_lng, float higher_lng)
    {
     
            String lower_lat_string = lower_lat.ToString().Replace(",",".");
            String higher_lat_string = higher_lat.ToString().Replace(",", ".");
            String lower_lng_string = lower_lng.ToString().Replace(",", ".");
            String higher_lng_string = higher_lng.ToString().Replace(",", ".");
     
    //cette partie ne marche pas      
            DataSet ds_bus_stop = a.getDataSet("SELECT `ID_BUS_STOP`,`LAT`,`LNG` FROM `bus_stop` WHERE LAT BETWEEN " + lower_lat_string + " AND " + higher_lat_string + " AND LNG BETWEEN " + lower_lng_string + " AND " + higher_lng_string + " ORDER BY `LNG`");
            DataTableReader reader_bus_stop = ds_bus_stop.CreateDataReader();
     
    }
    Dans le constructeur, le a.getDataSet marche mais pas dans la fonction suivante.

    Merci de votre aide !

    Edit : Bon après une petite pause, je pense que tout vient de l'objet a : si je rajoute "AccessBDD a = new AccessBDD(); " dans ma deuxieme fonction, ça marche...

    Mais je ne comprend pas pourquoi je devrai la reinstancié alors que je l'ai déjà instancié dans le constructeur et que c'est un champ privé de la classe...

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par Treuze Voir le message
    Mais je ne comprend pas pourquoi je devrai la reinstancié alors que je l'ai déjà instancié dans le constructeur et que c'est un champ privé de la classe...
    Vu ton code malheureusement tu fais une grosse erreur qui est à l'origine de tout ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Search(String new_day, int new_what, DateTime new_time_of_departure)
    {
        AccessBDD a = new AccessBDD();
        ...
    }
    Dans le constructeur tu masques complétement ton champ privé en déclarant et initialisant une variable locale de même nom, résultat ton champ privé n'est pas initialisé. Enlève la déclaration et ca devrait aller mieux après

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Search(String new_day, int new_what, DateTime new_time_of_departure)
    {
        a = new AccessBDD();
        ...
    }

  7. #7
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut



    Merci beaucoup

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/09/2007, 10h38
  2. Réponses: 2
    Dernier message: 09/09/2007, 14h25
  3. Réponses: 8
    Dernier message: 04/06/2007, 16h20
  4. Réponses: 24
    Dernier message: 01/06/2007, 09h26
  5. Réponses: 8
    Dernier message: 11/07/2006, 17h27

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