當我的數據庫是空的,或者它剛剛創建我收到此錯誤,使用光標從SQLite的返回行,錯誤時,數據庫是空
03-10 17:34:40.758: E/AndroidRuntime(1144): java.lang.RuntimeException:無法啓動活動 ComponentInfo {com.example.adressbooktake2/com.example.adressbooktake2.MainActivity}: android.database.CursorIndexOutOfBoundsException:索引0請求,大小的0
這是我的代碼在我的主類
public class MainActivity extends Activity {
DBAdaptor db;
Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new DBAdaptor(this).open();
cursor = db.getAllRecords();
DisplayRecord(cursor);
}
,然後在我的DBAdaptor類調用此代碼,
public Cursor getAllRecords()
{
Cursor gaRecords = db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME,
KEY_PHONENUMBER, KEY_EMAIL}, null, null, null, null, null);
gaRecords.moveToFirst();
return gaRecords;
}
}
我相信這個問題是數據庫剛剛創建的時候,沒有地方了moveToFirst()去,作爲沒有數據。但我不知道如何繞過這一點,因爲我需要一個moveToFirst()來存儲數據庫。
任何人都看到解決方案嗎?有正確的診斷問題嗎?
這整理吧!但我不明白爲什麼。是否因爲它只在光標上傳遞,如果它大於0?它在0時會發生什麼?它只是被遺忘了嗎? – user2153547 2013-03-10 17:54:28
@ user2153547確切地說,當'getCount()== 0'時,你的代碼將不會調用'DisplayRecords()',當有行時它們將逐一顯示。 – Sam 2013-03-10 17:57:53
@ρяσѕρєяK作者只想一次顯示一條記錄,我從之前的問題知道這一點。 :)(這就是爲什麼我沒有使用'moveToFirst()'。) – Sam 2013-03-10 17:59:03