我試圖檢索我的數據庫中的人的名字。目前我得到一個越界的錯誤。Android遊標越界異常索引0
我知道數據存在,即時嘗試檢索,因爲我有一個列表視圖,顯示數據庫中的所有數據。
IF ELSE檢查:
NameAppointPass.open();
String nameReturned = NameAppointPass.getName(sentID);
if(nameReturned != "")
{
Dialog d = new Dialog(this);
d.setTitle("returned");
TextView txt = new TextView(this);
txt.setText("win");
d.setContentView(txt);
d.show();
}
else
{
Dialog d = new Dialog(this);
d.setTitle("empty");
TextView txt = new TextView(this);
txt.setText("Fail");
d.setContentView(txt);
d.show();
}
希望有人可以看到我要去哪裏錯了。
目前,我發現了以下錯誤:
01-21 21:41:43.753: E/AndroidRuntime(276): FATAL EXCEPTION: main
01-21 21:41:43.753: E/AndroidRuntime(276): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.flybase2/com.example.flybase2.addAppointment}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
我使用的onclick「長變量」,如圖送我從列表視圖想要的數據的ID:
public void onListItemClick(ListView list, View v, int list_posistion, long item_id)
{
long idToPass = item_id;
Intent setName = new Intent("com.example.flybase2.addAppointment");
setName.putExtra("newPassedID", idToPass);
startActivity(setName);
}
然後通過綁定將其發送到對象實例'NameAppointPass',如下所示:
NameAppointPass.open();
String nameReturned = NameAppointPass.getName(sentID);
Th Ë下面的代碼顯示getName
該查詢的數據庫的方法,並應返回存儲在所選擇的ID名稱,而是我得到的錯誤:
public String getName(long passedID) {
String [] columns = new String[]{KEY_ROWAPPID, KEY_NAMEAPP, KEY_TYPEAPP, KEY_TIMEAPP, KEY_DATEAPP, KEY_COMMENTAPP};
Cursor c = ourDatabase.query(DATABASE_TABLEAPP, columns, KEY_ROWAPPID + "=" + passedID, null, null, null, null);
if(c != null)
{
c.moveToFirst();
String name = c.getString(1);
return name;
}
return null;
}
+1,正如你所說'if(c!= null)'不檢查遊標是否爲_empty_。 – Sam
@Sam我在返回的String Sam上添加了'IF ELSE'檢查。 (如我編輯和顯示在我原來的問題)。如果我添加檢查以確保行已經返回(即像Henrry所述),但沒有計數檢查它仍然崩潰,程序不會再崩潰!此外,'IF'聲明返回true,表明'nameReturned'不等於沒有結果。目前非常困惑! - – user1352057
@ user1352057根本問題是沒有行,其中'KEY_ROWAPPID +「=」+ passedID' ...仔細檢查「passedID」的值。 – Sam