2011-09-26 142 views
1

我使用简单的sql lite查询从表中获取计数值。SQLite Count where query

Cursor cursor = db.rawQuery("SELECT sum(name2) FROM " + TABLE_NAME, null); 
if (cursor.moveToFirst()) { 
    return cursor.getInt(0); 
} 
return cursor.getInt(0); 

这工作好

但是当我添加一个where子句选择查询

Cursor cursor = db.rawQuery("SELECT sum(name2) FROM " + TABLE_NAME + "WHERE name in (" + k + ")", null); 
if(cursor.moveToFirst()) { 
    return cursor.getInt(0); 
} 
return cursor.getInt(0); 

进程意外停止.......

+0

认真地,格式化您的代码。 –

+1

另外,请从'logcat'发布堆栈跟踪。 –

回答

0

检查的价值那个k变量,它可能对sql IN操作符无效。

4

你失踪的WHERE前面的空间:... + TABLE_NAME + "WHERE name ...

但有很多你的代码错误:

  • 为什么使用rawQuery()时,有不错的方法,如query(table, columns, selection, selectionArgs, groupBy, having, orderBy)是不遗余力你从构建SQL注入风险的查询字符串?即使rawQuery()也将查询参数作为第二个参数。

  • 您在哪里关门Cursor?你会这样泄漏记忆。

  • 如果cursor.moveToFirst()返回false并且在if -block后执行该行,会发生什么情况?这会崩溃。