2011-04-06 2 views
0

Je veux vérifier si le sqldatareader est null ou pas. Alors essayé le code suivant:erreur sqldatareader

if (x[k]!= DBNull.Value) 
{ 
    box.Text = Convert.ToString(x[k++]); 

    if ((box.Text) != "") 
    current[j - 1] = Convert.ToDouble(box.Text); 
    else current[j - 1] = 0; 

    box.Enabled = false; 
} 

Cependant, tout en essayant de vérifier la valeur dans le datareader, il renvoie une erreur, « tentative invalide de lecture des données lorsque aucune donnée est présent ». Sinon, que dois-je vérifier pour voir si les données sont là ou non? aidez s'il vous plaît. ici x est un sqldatareader SqlDataReader x = cmd.ExecuteReader(); et cmd est une sélection commnand ..

Répondre

0

Vous pouvez faire un chèque nul et a-Row avant d'accéder aux DataRows.

comme celui-ci

if(null != x && x.HasRows) 
{ 
//Your code 
} 
+0

mais sa montrant la même erreur. !! bien que la condition if soit satisfaite, elle n'est pas capable d'exécuter la ligne box.Text = Convert.ToString (x [k ++]); le champ fieldcount de x montre 6 mais alors pourquoi n'est-il pas capable de lire x [k]? même lorsque k = 0. – scooby

+0

Essayez Quickwatch la valeur du x [k]. – Anuraj

+0

est-il possible de regarder dans la valeur stockée dans le lecteur de données? Je veux dire, je ne pense pas qu'il existe un moyen de peep dans la valeur dans x [0] ou x [1] .. – scooby

4

Vous pouvez utiliser SqlDataReader.HasRows - il est vrai si au moins une ligne de données est présente, sinon, vous pouvez lire tous les résultats en utilisant SqlDataReader.Read();

Donc, pour votre exemple:

while(x.Read()) 
{ 
    //read stuff 
}