2011-09-26 304 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後執行該行,會發生什麼情況?這會崩潰。