【发布时间】:2017-02-08 08:01:41
【问题描述】:
我正在尝试编写一种方法,该方法返回两个日期之间条目的列总和。然而,无论如何它都会返回DBnull。当查询更简单时,我还有其他类似的方法(没有 SUM,简单的select * where statement)。 performQuery() 只是帮助方法,它返回一个填充的datatable 和查询结果。
public static int getBookedQuantity(int shopID, int bikeID, DateTime datetime)
{
string query = "SELECT sum(quantity) as \"quantity\" FROM booking WHERE bikeID=@bikeID AND shopID = @shopID AND starttime >= @Datetime AND endtime < @Datetime";
SqlParameter param1 = new SqlParameter("@bikeID", bikeID);
SqlParameter param2 = new SqlParameter("@shopID", shopID);
SqlParameter param3 = new SqlParameter("@Datetime", SqlDbType.DateTime);
param3.Value = datetime;
DataTable bookingData = performQuery(query, param1, param2, param3);
DataRow[] row = bookingData.Select();
int totalBooked = 0;
if ((row.Count()) > 0 && (bookingData != null)) // if there are rows returned
totalBooked = Convert.ToInt32(row[0]["quantity"]);
return totalBooked;
}
提前谢谢你!
【问题讨论】:
-
仅供参考:在 SQL 中,
1 + 2 + NULL产生NULL