2010-02-04 6 views
0

J'ai une instruction SQL de base qui recherche un utilisateur et renvoie un enregistrement, mais lorsque je lance un bloc de code indiquant if (myReader.Read()), il renvoie false. J'ai parcouru le code et examiné l'objet lecteur et il contient en fait un enregistrement. ci-dessous est le code.Oracle DataReader renvoie 1 ligne mais la méthode Read renvoie la valeur false

sql: SELECT user_name, user_password, USER_STATE FROM utilisateurs OÙ utilisateurs.id_utilisateur = 123

System.Data.Common.DbCommand _cmd = this.GetCommand(conn, _dbf, sqlText, CommandType.Text); 
    System.Data.Common.DbConnection _cn = _cmd.Connection; 
    System.Data.Common.DbDataReader myReader = null; 

    _cn.Open(); 
    using(_cn) { 
     myReader = _cmd.ExecuteReader(); 
     if (myReader.Read()) { 
       <object gets built here with user data returned from sql> 
      } 
     } 
+0

Est-ce que les résultats de retour de la requête lorsqu'il est exécuté à partir développeur sqlplus ou sql ? – thecoop

+0

oui, a couru le sql en crapaud et il a retourné les résultats. Vérifié la chaîne de connexion pointait vers la base de données correcte. – TampaRich

Répondre

1

Essayez:

if (myReader.HasRows) 
    while (myReader.Read()) 
    ..... 
+0

+1 - comment je le ferais. –

+0

c'est comme ça que je l'aurais fait mais ce n'est pas mon code de base pour changer. Recherche juste pourquoi un autre code de développeur ne fonctionne pas. Probablement qu'ils le changent à cela. – TampaRich

Questions connexes