0
我想查詢我的數據庫以查找最大的「區域號」,在我的區域表中進行某種檢查,這樣我就可以設置表單中的文本到下一個區號。未能查詢數據庫表中的最大數量
數據庫表由四列組成; _id,inpsection_link,area_number,區域引用。
我已經創建了我的數據庫輔助類以下(使用這篇文章作爲指導:SQLiteDatabase.query method):
public int 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);
int maxAreaNumber = c.getColumnIndex("max");
return maxAreaNumber;
}
然後我在areaEdit類調用如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
rmDbHelper = new RMDbAdapter(this);
rmDbHelper.open();
Intent i = getIntent();
inspectionId = i.getLongExtra("Intent_InspectionID", -1);
areaId = i.getLongExtra("Intent_AreaID", -1);
if (areaId == -1) {
nextAreaNumber = rmDbHelper.selectMaxAreaNumber(inspectionId) + 1;
Toast.makeText(getApplicationContext(), String.valueOf(nextAreaNumber),
Toast.LENGTH_LONG).show();
}
setContentView(R.layout.edit_area);
setUpViews();
populateFields();
setTextChangedListeners();
}
但是,它每次只返回1(即使數字高於存儲在數據庫中的數字)。
Confused.com !!任何幫助非常感謝。
嗨florianmski,感謝您的答覆,但沒有工作 - 我得到了CursorIndexOutOfBoundsException:指數-1要求,大小爲4 – Scamparelli
@Scamparelli我已經更新了我的答案,不要忘記cursor.moveToFirst()方法! – florianmski
非常感謝,除了表格中沒有數據之外,現在似乎正在工作。我想我需要測試爲null,但它似乎並沒有讓我 - 是否有替代int?乾杯。 – Scamparelli