2010-05-04 51 views
1

我有一個查詢:SqlDataReader對象和行數

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

在SQL同治工作室第一部分給我0 resuklts,和第二1一個結果,那是好的,但 在SqlDataReader的我用的是相同的查詢ofcource無:

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

,因爲我使用:

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

而且

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"); 
         } 
        } 

給了我零結果

回答

3

數據庫結果多個結果,所以如果第一個結果是空的,你需要使用reader.NextResult()就移動到第二個結果。

您也可以查詢通過檢查返回一個結果,如果第一個選擇將包含什麼:

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