我試圖通過使用Cursor
從我SQLite數據庫的一些值回到我的代碼大小,但我得到的Android - CursorIndexOutOfBounds指數0要求與0
06-14 22:31:30.586: E/AndroidRuntime(18859): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
06-14 22:31:30.586: E/AndroidRuntime(18859): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
06-14 22:31:30.586: E/AndroidRuntime(18859): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
06-14 22:31:30.586: E/AndroidRuntime(18859): at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68)
06-14 22:31:30.586: E/AndroidRuntime(18859): at com.km.parkit.ChosenSlotDAO.cursorToSlot(ChosenSlotDAO.java:166)
06-14 22:31:30.586: E/AndroidRuntime(18859): at com.km.parkit.ChosenSlotDAO.createSlot(ChosenSlotDAO.java:57)
06-14 22:31:30.586: E/AndroidRuntime(18859): at com.km.parkit.MainMap$1.onClick(MainMap.java:80)
06-14 22:31:30.586: E/AndroidRuntime(18859): at android.view.View.performClick(View.java:4756)
06-14 22:31:30.586: E/AndroidRuntime(18859): at android.view.View$PerformClick.run(View.java:19761)
我必須得到每一個使用單獨的get
這樣
public String getSelectedSlot() {
String slot = new String();
Cursor cursor = database.query(ChosenSlotDatabaseHandler.TABLE_CHOSEN_PARKING_SLOT,
chosenSlotColumn, null, null, null, null, null);
if(cursor.moveToFirst()) {
slot = cursor.getString(0);
}
// make sure to close the cursor
cursor.close();
return slot;
}
public String getParked() {
String parked = new String();
Cursor cursor = database.query(ChosenSlotDatabaseHandler.TABLE_CHOSEN_PARKING_SLOT,
chosenParkedColumn, null, null, null, null, null);
if(cursor.moveToFirst()) {
parked = cursor.getString(0);
}
// make sure to close the cursor
cursor.close();
return parked;
}
public String getIsParked() {
String isParked = new String();
Cursor cursor = database.query(ChosenSlotDatabaseHandler.TABLE_CHOSEN_PARKING_SLOT,
isParkedColumn, null, null, null, null, null);
if(cursor.moveToFirst()) {
isParked = cursor.getString(0);
}
// make sure to close the cursor
cursor.close();
return isParked;
}
列之一,這裏是我的updateSlot
public ChosenParkingSlot updateSlot(String Id, String selectedSlot, String parkedRow, String isParked) {
ContentValues values = new ContentValues();
values.put(ChosenSlotDatabaseHandler.CHOSEN_ID, Id);
values.put(ChosenSlotDatabaseHandler.CHOSEN_SLOT_NAME, selectedSlot);
values.put(ChosenSlotDatabaseHandler.CHOSEN_PARKED_ROW, parkedRow);
values.put(ChosenSlotDatabaseHandler.IS_PARKED, isParked);
long insertId = database.update(ChosenSlotDatabaseHandler.TABLE_CHOSEN_PARKING_SLOT, values, "_id= " + Id,
null);
Cursor cursor = database.query(ChosenSlotDatabaseHandler.TABLE_CHOSEN_PARKING_SLOT,
allColumns, ChosenSlotDatabaseHandler.CHOSEN_ID + " = " + insertId, null,
null, null, null);
cursor.moveToFirst();
ChosenParkingSlot newSlot = cursorToSlot(cursor);
cursor.close();
return newSlot;
}
這裏是我的Cursor
private ChosenParkingSlot cursorToSlot(Cursor cursor) {
ChosenParkingSlot parkingSlot = new ChosenParkingSlot();
parkingSlot.setId(cursor.getInt(0));
parkingSlot.setSlotName(cursor.getString(1));
parkingSlot.setParkedRow(cursor.getString(2));
parkingSlot.setIsParked(cursor.getInt(3));
return parkingSlot;
}
出了什麼問題?索引0表示第一列..正確....?
我做創建的id = 1
,slot_name = selectedSlot
其餘值的數據庫是空的。讀取數據
if(cursor!=null && cursor.getCount()>0){
cursor.moveToFirst();
num = cursor.getString(cursor.getColumnIndex("<column index>"));
}
也許你的光標對象不獲取從數據庫中任何事情之前
您沒有顯示'createSlot()'。 –
是的,正是因爲如此,我意識到自己的錯誤,現在我正在編輯我的代碼,將回答我自己的問題。謝謝! :D –