2017-06-12 2 views
0

Un étrange problème a commencé à se produire aujourd'hui. Chaque fois que j'essaie d'évaluer un résultat SqlDataReader, il montre qu'il n'y a pas de données disponibles mais si je ne l'essaye pas, cela fonctionne comme prévu.Le débogage de l'application de formulaires Web asp.net lève InvalidOperationException dans VS 2013

Par exemple, ayant cette requête:

using (SqlDataReader reader = cmd.ExecuteReader()) 
        { 
         while (reader.Read()) 
         { 
          obj.Id = int.Parse(reader[0].ToString()); 
         } 
        } 

Fonctionne bien si je n'évalue pas le lecteur (voir image ci-dessous avec ce que je veux dire).

enter image description here

Quelqu'un peut-il me aider débugger? J'utilise Visual Studio 2013 Profesional. Veuillez noter qu'il y a des données dans la BD et que tout fonctionne bien si je n'évalue pas le lecteur. La chaîne cmd est Select * from MyTable

Répondre

0

Il semble que, pendant votre étape d'évaluation, vous utilisiez l'enregistrement renvoyé. Votre reader.Read() passerait de l'enregistrement suivant.

Pour que ce soit vrai, je fais l'hypothèse que vous recherchez seulement 1 valeur de retour. Si vous êtes, vous pouvez utiliser la commande cmd.ExecuteScalar() pour obtenir une seule valeur renvoyée sans avoir besoin d'un lecteur du tout.

obj.id = cmd.ExecuteScalar(); 

Vous aurez probablement besoin de jeter votre résultat au type correct comme:

obj.id = cmd.ExecuteScalar().ToString(); 

ou

obj.id = Convert.ToInt32(cmd.ExecuteScalar()); 

Si vous souhaitez tester le fait que votre évaluateur consomme votre .Read() résultats, ont quelque chose retourner 2 valeurs, et évaluer pour le premier. Vous devriez recevoir la deuxième valeur après.

+0

Désolé, j'ai oublié de mentionner que cela lit plus de valeurs, environ 100 valeurs. – Zippy

+0

@Zippy, donc ça casse tous, même si vous en évaluez un? Cela peut prendre tout l'élément du lecteur dans l'évaluateur et ne rien retourner. –

+0

Si j'évalue le lecteur à 'cmd.ExecuteReader' il montre qu'il a 100 lignes, avec des valeurs comme prévu ... – Zippy