我在以下代码中遇到了 SELECT 语句的问题(这是在我的数据库助手类中):
public Cursor selectMaxAreaNumber (long inspectionId) {
String inspectionIdString = String.valueOf(inspectionId);
String[] tableColumns = new String[] {
AREA_NUMBER,
"(SELECT max(" + AREA_NUMBER + ") FROM " + AREAS_TABLE + ") AS max"
};
String whereClause = INSPECTION_LINK + " = ?";
String[] whereArgs = new String[] {
inspectionIdString
};
Cursor c = rmDb.query(AREAS_TABLE, tableColumns, whereClause, whereArgs,
null, null, null);
if (c != null) {
c.moveToFirst();
}
c.close();
return c;
}
然后我在我的活动中这样称呼它:
Cursor c = rmDbHelper.selectMaxAreaNumber(inspectionId);
startManagingCursor(c);
c.moveToFirst();
nextAreaNumber = c.getInt(c.getColumnIndex("max")) + 1;
它正在从表中提取最大数量,因此 WHERE 语句似乎失败了。但是,我看不出问题是什么。
作为这个问题的一部分,任何人都可以通过在查询中使用 ID 之前将 ID 转换为字符串来确认我是否在做正确的事情,我是否需要在这两个位中编写 c.moveToFirst() ?
提前谢谢了!