2017-04-10 129 views
0

由於沒有滿足我查詢的所有條件的記錄,所以我的查詢不返回任何內容,而是一個空行。然而,Rows.Count是1,而不是0。這裏是我的查詢:當返回的數據集由一個空行組成時,Rows.Count = 1

SELECT LicenseID 
FROM LICENSES 
WHERE LicenseType = @LicenseType 
    AND DriverID = @DriverID 
    AND CarID IN(
     SELECT CarID 
     FROM CARS 
     WHERE CarSerial = @CarSerial 
      AND DriverID = @DriverID 
    ) AND LicenseID IS NOT NULL 
    AND ((StartDate <= CONVERT(DATETIME, @EndDate)) 
    AND (EndDate >= CONVERT(DATETIME, @StartDate))) 

這裏是我的C#的if語句的條件,由於某種原因一直是真正由於行數,即使沒有記錄會議標準:

if (ds != null && ds.Tables[0].Rows.Count > 0) 

使用的數據庫是SQL Server。這在以前似乎在Oracle下正常工作。

+0

空行仍然是一行。在sql中嘗試一些isnull? – Trey

+0

如果沒有滿足查詢條件的記錄,那麼您的查詢將返回***零行,而不是空行。所以,顯然,你做錯了什麼。 –

+1

如果你得到1行返回,你能看到什麼值?也許這將有助於排查問題。基本上,當這行代碼正在執行時,它有一行數據,所以找出它是什麼。 – Jason

回答

0

爲了避免出錯:

if (ds.Tables.Count > 0) 
{ 
     if (ds.Tables[0].Rows.Count > 0) 
     { 
     //Then Return a value here or Get the date 
       foreach (DataRow dr in ds.Tables[0].Rows) 
       { 
        String getFirstRow = dr[0].ToString(); 
        //And so on........ 
       } 
     } 
     else 
     { 
      //Return value if no rows found. 
     } 
} 
0

什麼我需要添加只是爲了 「LicenseID <>'」 額外的檢查。 「LicenseID不是NULL」是不夠的,因爲有記錄會議所有條件但具有LicenseID =「」。我相信這並不是Oracle數據庫的問題,但在切換到SQL Server之後卻成了問題。感謝您的所有意見和建議。

相關問題