2013-04-15 2 views
0

Вот код в деятельности:исключение: индекс курсора вне диапазона

//query 
final dbhelper helper = new dbhelper(this); 
Cursor c = helper.query(); 
boolean exist =false; 
if(c != null && c.moveToFirst()){ 
Log.d("atestdbChar1no",String.valueOf(c.getCount())); 
int i=0; 
while(c.isAfterLast()){ 
Log.d("atestdb1",String.valueOf(i++)); 
Log.d("atestdb2",String.valueOf(c.getInt(0))); 
Log.d("atestdb3",c.getString(1)); 
Log.d("atestdb4",c.getString(2)); 
c.moveToNext(); 
} 

//insert 
     ContentValues values = new ContentValues(); 
     if(!finWords.equals("null")){ 
     if(finWords.length()>index){ 
     String selectWord = finWords.substring(index, index+1); 
     values.put("character", finChar); 
     values.put("word", selectWord); 
     helper.insert(values); 

Вот код в SQLiteOpenHelper:

public void insert(ContentValues values) { 
    SQLiteDatabase db = getWritableDatabase(); 
    db.insert(TBL_NAME, null, values); 
    Log.d("test", "dbinsert"); 
    db.close(); 
} 

public Cursor query() { 
    SQLiteDatabase db = getWritableDatabase(); 
    Cursor c = db.query(TBL_NAME, null, null, null, null, null, null); 
    Log.d("test", "dbquery"); 
    return c; 
} 

можно вставить данные в базу данных , но я не могу запросить их logcat говорит указатель курсора вне диапазона и просто выводит некоторые данные, например, просто выводит с идентификатором 1,2,4,7, затем принудительно закрывает приложение , но я уже вставляю 14 данных Что случилось с моим кодом?

+0

сообщение LogCat след, когда вы говорите, есть исключение – Pragnani

+0

Вы получаете данные в Cursor? проверьте с функцией, что c.moveToFirst() имеет запись для возврата. – gks

ответ

1

Вы забыли отрицать c.isAfterlast(), и если вы не передадите null, вам не нужно проверять нулевой курсор.

if(c.moveToFirst()){ 
Log.d("atestdbChar1no",String.valueOf(c.getCount())); 
int i=0; 
while(!c.isAfterLast()){ 
Log.d("atestdb1",String.valueOf(i++)); 
Log.d("atestdb2",String.valueOf(c.getInt(0))); 
Log.d("atestdb3",c.getString(1)); 
Log.d("atestdb4",c.getString(2)); 
c.moveToNext(); 
} 
+0

решил спасибо за вашу помощь –

Смежные вопросы