当我的数据库是空的,或者它刚刚创建我收到此错误,使用光标从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