Obtention de l’erreur «Cette méthode ou propriété ne peut pas être appelée sur les valeurs NULL»

MISE À JOUR 1:

L’exception est lancée sur cette ligne:

client_group_details.Add(new ClientGroupDetails( 

QUESTION ORIGINALE:

J’ai le code suivant que j’ai réduit de 30 colonnes de données de la firebase database à seulement 2 colonnes de la firebase database. Je reçois une erreur chaque fois que l’une des colonnes renvoie une valeur NULL:

 public class ClientGroupDetails { public Ssortingng Col2; public Ssortingng Col3; public ClientGroupDetails(Ssortingng m_Col2, Ssortingng m_Col3) { Col2 = m_Col2; Col3 = m_Col3; } public ClientGroupDetails() { } } [WebMethod()] public List GetClientGroupDetails(ssortingng phrase) { var client_group_details = new List(); using (connection = new SqlConnection(ConfigurationManager.AppSettings["connSsortingng"])) { using (command = new SqlCommand(@"select col2, col3 where col1 = @phrase", connection)) { command.Parameters.Add("@phrase", SqlDbType.VarChar, 255).Value = phrase; connection.Open(); using (reader = command.ExecuteReader()) { int Col2Index = reader.GetOrdinal("col2"); int Col3Index = reader.GetOrdinal("col3"); while (reader.Read()) { client_group_details.Add(new ClientGroupDetails( reader.GetSsortingng(Col2Index), reader.GetSsortingng(Col3Index))); } } } } return client_group_details; } 

L’erreur que je reçois est la suivante:

Les données sont nulles. Cette méthode ou propriété ne peut pas être appelée sur les valeurs Null.

Je ne sais pas quoi faire ici pour traiter les valeurs NULL car le code ci-dessus est une version simplifiée.

Quelqu’un sait comment résoudre ce problème?

C’est parce que reader.GetSsortingng ne doit pas être appelé sur les valeurs DBNull . Essayez de changer votre code comme suit:

 client_group_details.Add(new ClientGroupDetails( reader.IsDbNull(Col2Index) ? null : reader.GetSsortingng(Col2Index), reader.IsDbNull(Col3Index) ? null : reader.GetSsortingng(Col3Index))); 

Vous devez utiliser IsDbNull pour vérifier si la colonne est nulle avant d’appeler GetSsortingng , par exemple:

 ssortingng s1, s2; if (reader.IsDbNull(Col1Index) == false) { s1 = reader.GetSsortingng(Col1Index); } if (reader.IsDbNull(Col2Index) == false) { s2 = reader.GetSsortingng(Col2Index); } client_group_details.Add(new ClientGroupDetails(s1, s2)); 

Vous pouvez le faire de différentes manières, mais je pense que la meilleure approche pour votre code consiste à append un appel de fonction simple à votre texte SQL, à savoir la fonction IsNull .

Voici un lien vers la page de manuel pour ceci: IsNull MSDN reference

En gros, vous allez changer votre texte SQL pour qu’il ressemble à ceci:

 "select IsNull(col2, ''), IsNull(col3, '') where col1 = @phrase" 

Et maintenant, si la colonne dans la firebase database est null, elle renverra une chaîne vide.

Vous pouvez également définir des valeurs par défaut sur vos colonnes ou vous pouvez rechercher System.DBNull.Value du côté du code.

Bonne chance!