J'ai du mal à remplir ma list

-
Bonjour,
j'ai créé une classe Lot puis une liste Lot dans cette classe mais une fois mon Reader en lecture list.Add renvoi une erreur "les données sont null cette méthode ne peut pas être appelée sur des valeurs Nulles.

public List<Lot>getAllLot(string query) {
List<Lot> list =new List<Lot> () ;
if (dao.openConnection()) {
MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection("server=localhost;database=pharmacie;uid=root;pwd=sqlserver12;");
MySqlCommand cmd =new MySqlCommand(query,conn);
conn.open();
MySqlDataReader reader =new cmd.ExecuteReader();

while(reader.Read()) {
list.Add(new Lot {
numlot=reader.GetString (0),
dateFabrication=reader.GetDateTime(1),
dateLivraison =reader.GetDateTime(2),
datePeremption =reader.GetDateTime(3),)});
}
reader.Close();
dao.closeConnection();
}
return list;
}


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

Votre réponse

5 réponses

Messages postés
12388
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
0
Merci
Bonjour


c'est qu'à un moment ou un autre un enregistrement est vide ou ne contient pas toutes les données.

Tu devrais essayer de décomposer:
while(reader.Read())
{
   Lot monLot = new Lot {
   numlot=reader.GetString (0),
   dateFabrication=reader.GetDateTime(1),
   dateLivraison =reader.GetDateTime(2),
   datePeremption =reader.GetDateTime(3)};

   list.Add(monLot);

}



Au moment ou ça plante, regarde le contenu du champ du reader et de monLot.
Merci mais cela me renvoi ceci " error Lot.getAllLot(string)': not all code paths return a value"
public List<Lot>getAllLot(string query) {

List<Lot> list =new List<Lot> () ;

if (dao.openConnection()) {

MySqlConnection conn = new

MySql.Data.MySqlClient.MySqlConnection("server=localhost;

database=pharmacie;uid=root;pwd=sqlserver12;");

MySqlCommand cmd =new MySqlCommand(query,conn);

conn.open();

MySqlDataReader reader =new cmd.ExecuteReader();

while(reader.Read()) {

list.Add(new Lot { // c'est à partir d'ici que j'ai l'erreur null

numlot=reader.GetString (0),

dateFabrication=reader.GetDateTime(1),

dateLivraison =reader.GetDateTime(2),

datePeremption =reader.GetDateTime(3),)});
} // jusque là

reader.Close();
dao.closeConnection();
}
return list;
}
Commenter la réponse de Whismeril
Messages postés
12388
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
0
Merci
Il faudrait que tu mettes le code complet de la méthode, parce que là je ne voie pas.
Commenter la réponse de Whismeril
Messages postés
12388
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
0
Merci
Ça c'est deux fois le même code, je t'ai proposé de décomposé pour essayer de mieux cerné l'erreur et tu as répondu qu'il y avait une nouvelle erreur.

C'est donc le nouveau code qu'il faut montrer.

Et en utilisant la coloration syntaxique comme indiqué par NHenry dans la correction de ton premier message s'il te plait.

Et tant qu'à faire en utilisant le bouton "répondre" plutôt que d'ajouter un commentaire à un message antérieur.
Commenter la réponse de Whismeril
0
Merci
Bonjour merci en découpant j'ai trouver l'erreur. l'autre problème c'est que mon datagridview ne se rempli pas avec les données de ma base j'utilise ma methode précédente getAllLot . Voici mon code :


public class Maga {

// lote est une instance de la class Lot

Dtgvmaga.DataSource = lote.getAllLot() ;

 }


Commenter la réponse de gruf
Messages postés
12388
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
0
Merci
Et bien toujours pour deboguer, découpe

public class Maga {
   List<Lot> list = lote.getAllLot();
   Dtgvmaga.DataSource  = list;//tu mets un point d'arrêt ici. Si list est vide le datagridview ne peut pas se remplir.

 }


Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.