当返回的数据集由一个空行组成时,Rows.Count = 1
问题描述:
由于没有满足我查询的所有条件的记录,所以我的查询不返回任何内容,而是一个空行。然而,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下正常工作。
答
为了避免出错:
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.
}
}
答
什么我需要添加只是为了 “LicenseID <>'” 额外的检查。 “LicenseID不是NULL”是不够的,因为有记录会议所有条件但具有LicenseID =“”。我相信这并不是Oracle数据库的问题,但在切换到SQL Server之后却成了问题。感谢您的所有意见和建议。
空行仍然是一行。在sql中尝试一些isnull? – Trey
如果没有满足查询条件的记录,那么您的查询将返回***零行,而不是空行。所以,显然,你做错了什么。 –
如果你得到1行返回,你能看到什么值?也许这将有助于排查问题。基本上,当这行代码正在执行时,它有一行数据,所以找出它是什么。 – Jason