我正在尝试计算表中包含年份和月份在一定范围内的行数。出于某种原因,我总是零。
知道我哪里出错了?
主要代码
//define Report Start and End Dates
// Get due date
Calendar curDate = Calendar.getInstance();
Calendar defaultStart = Calendar.getInstance();
defaultStart.set(curDate.get(Calendar.YEAR), curDate.get(Calendar.MONTH)-1, curDate.get(Calendar.DAY_OF_MONTH));
String curYear = ((Integer)curDate.get(Calendar.YEAR)).toString();
String curMonth = ((Integer)(curDate.get(Calendar.MONTH)+1)).toString();
String curDay = ((Integer)curDate.get(Calendar.DAY_OF_MONTH)).toString();
if(curDate.get(Calendar.MONTH)+1 < 10)
curMonth = "0"+((Integer)(curDate.get(Calendar.MONTH)+1)).toString();
String defaultYear = ((Integer)defaultStart.get(Calendar.YEAR)).toString();
String defaultMonth = ((Integer)(defaultStart.get(Calendar.MONTH)+1)).toString();
String defaultDay = ((Integer)defaultStart.get(Calendar.DAY_OF_MONTH)).toString();
if(defaultStart.get(Calendar.MONTH)+1 < 10)
defaultMonth = "0"+((Integer)(defaultStart.get(Calendar.MONTH)+1)).toString();
reportEndDate = curYear+"-"+curMonth+"-"+curDay;
reportStartDate = defaultYear+"-"+defaultMonth+"-"+defaultDay;
int numEntries = StatisticsAdapter.getNumEntriesByDate(startYear, startMonth, endYear, endMonth);
Toast.makeText(ReportsByDateScreen.this, "numEntries="+numEntries, Toast.LENGTH_LONG).show();
StatisticsAdapter
public int getNumEntriesByDate(int startYear, int startMonth, int endYear, int endMonth)
{
int count = 0;
int year = startYear;
int month = startMonth;
String query = "select * from STATISTICS where YEAR = "+year+" and MONTH = "+month;
while(year <= endYear)
{
if(year != endYear)
{
Cursor cursor = db.rawQuery(query, null);
if(cursor.getCount()>=1) // At least 1 items found in given month and year
count++;
cursor.close();
}
else if(year == endYear && month <= endMonth)
{
Cursor cursor = db.rawQuery(query, null);
if(cursor.getCount()>=1) // At least 1 items found in given month and year
count++;
cursor.close();
}
month++;
if(month > 12)
{
year++;
month = 1;
}
}
return count;
}
我的Toast总是表示“numEntries = 0”
答案 0 :(得分:3)
您必须使用
cursor=db.rawQuery("Select count(*) from STATISTICS where YEAR = "+year+" and MONTH = "+month", null);
计算值的数量,然后使用cursor.getCount()
获取返回的记录数。
答案 1 :(得分:2)
您应该计算如下所示的值:
String query = "select count(*) from STATISTICS where YEAR = "+year+" and MONTH = "+month;
而不是:
String query = "select * from STATISTICS where YEAR = "+year+" and MONTH = "+month;
获取光标结果只需执行Interger.parseInt(//您的字符串)即可获得计数
希望这可以帮助......