如何修复android.database.cursorindexoutofboundsexception错误?

时间:2013-06-04 04:59:30

标签: android database sqlite

任何?请帮我解决这个问题。我得到一个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

2 个答案:

答案 0 :(得分: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;
    }

答案 1 :(得分:0)

使用游标companyCode的简单方法..

companyCode.moveToFirst();
while( !companyCode.isAfterLast() ) {
    //do something with companyCode..
    //.....
    companyCode.moveToNext();
}
companyCode.close()