SQLite Count查询的位置

时间:2011-09-26 17:56:24

标签: android sqlite select count where-clause

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

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

这很好用

但是当我向select查询添加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);

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

2 个答案:

答案 0 :(得分:4)

您错过了WHERE... + TABLE_NAME + "WHERE name ...

前面的空格

但你的代码有很多错误:

  • 为什么在query(table, columns, selection, selectionArgs, groupBy, having, orderBy)之类的好方法可以避免构建具有SQL注入风险的查询字符串时使用rawQuery()?甚至rawQuery()将查询参数作为第二个参数。

  • 你在哪里关闭Cursor?你会以这种方式泄漏记忆。

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

答案 1 :(得分:0)

检查该k变量的值,它可能对sql IN运算符无效。