C.moveToFirst总是在使用SQLite的android中返回false

时间:2014-04-07 09:46:44

标签: java android sql sqlite

我使用以下查询从sqlite数据库中获取数据:

SELECT  * FROM CASHIER Where Type = 1 And DATE Between '2014/03/31' And '2014/04/06';

它在SQLite管理员中显示准确的结果但是当我在android C.moveToFirst中使用它时总是返回false

请有人告诉我为什么会这样吗?

以下是我的方法:

public List<Income> getWeeklyIncomeRecords(String in_startWeek, String on_endWeek)
    {
        List<Globals.Income> income = new ArrayList<Globals.Income>();
        String selectQuery = "SELECT  * FROM " + TABLE_NAME1+" Where Type = 1" + " And DATE Between " +"'"+in_startWeek+"'"+ " And " +"'"+on_endWeek+"'";

        //Log.e(TAG, selectQuery);

        SQLiteDatabase db = mDbHelper.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                Globals globals = new Globals();
                Income td = globals.new Income();
                td.setIn_amount(c.getInt((c.getColumnIndex(AMOUNT))));
                td.setIn_catagory(c.getString(c.getColumnIndex(CATEGORY)));
                td.setIn_date((c.getString(c.getColumnIndex(DATE))));
                td.setIn_name(c.getString(c.getColumnIndex(NAME)));
                td.setIn_imagename(c.getString(c.getColumnIndex(IMAGENAME)));
                income.add(td);
            } while (c.moveToNext());
        }

         return income;         



    }

2 个答案:

答案 0 :(得分:0)

日期类型使用格式YYYY-MM-DD,因此查询必须为:

SELECT  * FROM CASHIER Where Type = 1 And DATE Between '2014-03-31' And '2014-04-06';

答案 1 :(得分:-2)

替换

SQLiteDatabase db = mDbHelper.getReadableDatabase(); 

通过

SQLiteDatabase db = this.getWritableDatabase();