次のコードの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を文字列に変換して正しいことを行っているかどうかを誰かが確認できますか?両方のビットにc.moveToFirst()を書き込む必要がありますか?
よろしくお願いします!