我在与下面的代码SELECT语句(这是我的数据库辅助类)的问题:SELECT语句不返回MAX数
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转换为字符串做正确的事情,我是否需要在两个位写入c.moveToFirst()?
非常感谢提前!
嵌套的'SELECT'语句之前执行的'WHERE'子句应用。所以它按预期工作,虽然不符合你的意愿:) – zapl