android:过滤列数据

时间:2013-03-27 19:00:35

标签: android sqlite

您好我的sqlite3数据库中有这样的表。

db.execSQL(" CREATE TABLE IF NOT EXISTS "
        + DATABASE_TABLE + " ( " + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"   + KEY_DATE + " TEXT, " + KEY_CATEGORY + " TEXT, "
        + KEY_SUB_CATEGORY + " TEXT, " + KEY_AMOUNT + " REAL, "
        + KEY_NOTE + " TEXT " + " );");

我查询了数据库并获得了当前年份KEY_SUB_CATEGORYKEY_AMOUNT的所有值。

Cursor c = db.query(DATABASE_TABLE,new String[] { KEY_SUB_CATEGORY, KEY_AMOUNT }, + KEY_YEAR + "=? ", new String[] { Integer.toString(currentYear) }, null, null, null, null);

现在,有没有办法,我可以根据KEY_SUB_CATEGORY中的值进一步过滤。

例如,我的KEY_SUB_CATEGORY有3个Grocery值。

有没有办法可以从这个光标中获取Grocery的总金额?或者我每次都要为每个KEY_SUB_CATEGORY分别进行查询?

enter image description here

2 个答案:

答案 0 :(得分:0)

  

有没有办法可以从中获得Grocery的总金额   光标?或者我必须单独查询每个KEY_SUB_CATEGORY   每一次?

我建议您进行新的查询(代码更具可读性),然后使用SUM()函数来制作技巧。

int sum = 0; 
String query = "select SUM(" + KEY_AMOUNT + ") from " + DATABASE_TABLE 
             + " where " + KEY_SUB_CATEGORY + " = ?";
Cursor c = db.rawQuery(query, new String[] {"Grocery"});
if (c.moveToFirst()) {
   sum = c.getInt(0);
}

输出将是:

select SUM(KEY_AMOUNT) from DATABASE_TABLE where KEY_SUB_CATEGORY = 'Grocery';

答案 1 :(得分:0)

Cursor c = db.query(DATABASE_TABLE,
new String[] { KEY_SUB_CATEGORY, KEY_AMOUNT, "sum(" + KEY_AMOUNT + ") as catsum " }, 
+ KEY_YEAR + "=? ", new String[] { Integer.toString(currentYear) }, 
KEY_SUB_CATEGORY, null, null, null);  

c.getInteger(2) would be the sum