我有以下代码
public int getIngCount(String id,String ingrediant) {
String countQuery = "SELECT * FROM " + TABLE_CONTACTS2 + " WHERE id = "+id+ " AND ingrediant = "+ingrediant;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
// return count
return cursor.getCount();
}
但是当没有满足条件的记录时,它会导致异常(没有这样的列)而不是返回0.
请帮我找到解决方案。提前谢谢。
答案 0 :(得分:2)
ingrediant
应视为字符串文字,而不是列名称等标识符。在SQL中,您使用单引号作为字符串文字。不过,使用?
占位符来绑定文字值是个更好的主意:
String countQuery = "SELECT * FROM " + TABLE_CONTACTS2 + " WHERE id = "+id+ " AND ingrediant = ?";
Cursor cursor = db.rawQuery(countQuery, new String[] { ingrediant });
此外,关闭后不要调用任何游标方法。