2013-06-04 8 views
0

Кто-нибудь? пожалуйста, помогите мне разобраться в этом. Я получаю ошибку android.database.cursorindexoutofboundsexception, и я не знаю почему. Я уверен, что я правильно назвал свои столбцы, но все же получил. То, что я пытаюсь сделать, это просто получить фирменный код данного названия компании.Как исправить ошибку android.database.cursorindexoutofboundsexception?

Вот мой код моего DatabaseAdapter

public Cursor getCompanyCode(String company) 
{ 
    Cursor c = dbSqlite.query(Constants.DATABASE_TABLE_COMPANY, 
      new String[] { Constants.DATABASE_COLUMN_ID, 
          Constants.COMPANY_CODE,Constants.COMPANY_NAME}, 
      Constants.COMPANY_CODE+" = ?", 
      new String[]{company}, null, null, null); 

    if (c != null) 
    { 
     c.moveToFirst(); 
    } 
    return c; 
} 

и вот еще один код, чтобы получить код компании данной компании

Cursor companyCode = databaseAdapter.getCompanyCode(company); 
code = companyCode.getString(companyCode.getColumnIndex(Constants.COMPANY_CODE)); 

и вот мой LogCat.

06-04 12:54:48.085: E/AndroidRuntime(27134): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.uni.customercare/com.uni.customercare.ViewSummaryActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 
+0

Вы пытались проверить, если курсор содержит какие-либо записи (например, возвращаемое значение из moveToFirst() или GetCount())? – sandrstar

+0

нет. Я не знаю, как это сделать. Я попытался поставить его в тост, чтобы узнать, есть ли ценность, но мое приложение рушится. – lolliloop

+0

Попробуйте вызвать companyCode.getCount() перед getString(), чтобы убедиться, что он содержит записи. – sandrstar

ответ

0

Попробуйте этот подход:

определить этот метод в вашей базе данных вспомогательного класса, который расширяет SQLiteOpenHelper. Для вызова этого метода используйте экземпляр класса.

public HashMap<String, String> getCompanyDetails(){ 

     HashMap<String,String> company= new HashMap<String,String>(); 
     String selectQuery = "SELECT * FROM " + TABLE_COMPANY; //Change this query accordingly. 

     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     cursor.moveToFirst(); 
     if(cursor.getCount() > 0){ 
      company.put(KEY_COMP_ID, cursor.getString(0)); 
      company.put(KEY_COMP_CODE, cursor.getString(1)); 
      company.put(KEY_COMP_NAME, cursor.getString(2)); 

     } 
     cursor.close(); 
     db.close(); 

     return company; 
    } 
0

Простой способ работы с курсором companyCode ..

companyCode.moveToFirst(); 
while(!companyCode.isAfterLast()) { 
    //do something with companyCode.. 
    //..... 
    companyCode.moveToNext(); 
} 
companyCode.close() 
Смежные вопросы