Android SQLite查询整数

时间:2014-01-14 06:08:27

标签: android sqlite

我正在尝试计算表中包含年份和月份在一定范围内的行数。出于某种原因,我总是零。

知道我哪里出错了?

主要代码

//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”

2 个答案:

答案 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(//您的字符串)即可获得计数

希望这可以帮助......