2010-05-04 5 views
1

j'ai une requête:SQLDataReader et rowcount

declare @Code nvarchar(100) 
select @Code="BMW" 
select name from NewCars where [email protected] 
if @@rowcount = 0 
Select name from OldCars where [email protected] 

Dans Sql studio managment première partie me donne 0 resuklts, et le second 1 un résultat, et c'est ok, mais dans sqldatareader J'utilise la même requête ofcource sans:

declare @Code nvarchar(100) 
select @Code="BMW" 

parce que je l'utilise:

cmd.Parameters.AddWithValue("@Code", "BMW"); 

Et

using (SqlDataReader reader = cmd.ExecuteReader()) 
        { 
         if (reader.HasRows) 
         { 
          while (reader.Read()) 
          { 
           Name= reader["Name"].ToString(); 
          } 
         } 
         else 
         { 
          throw new NotSupportedException("Lack of car with this Code"); 
         } 
        } 

me donne zéro résultat

Répondre

3

La base de données entraîne plusieurs résultats, donc si le premier résultat est vide, vous devez utiliser reader.NextResult() pour passer au second résultat.

Vous pouvez également faire la requête retourne un seul résultat en vérifiant si la première sélection contiendrait quelque chose:

declare @Code nvarchar(100) 
select @Code="BMW" 
if (exists(select * from NewCars where [email protected])) begin 
    select name from NewCars where [email protected] 
end else begin 
    select name from OldCars where [email protected] 
end