2017-04-10 6 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

空の行はまだ行です。いくつかのisnullをSQLで試してみてください。 – 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 = ""のレコードがあるため、 "LicenseID IS NOT NULL"は十分ではありませんでした。私はこれがOracleデータベースの問題ではないと考えていますが、SQL Serverに切り替えた後に問題となることが判明しました。あなたのコメントと提案をありがとう。

関連する問題