0

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

这是我的日志。

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
4

2 回答 2

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;
    }
于 2013-06-04T05:25:18.283 回答
0

使用光标公司代码的简单方法..

companyCode.moveToFirst();
while( !companyCode.isAfterLast() ) {
    //do something with companyCode..
    //.....
    companyCode.moveToNext();
}
companyCode.close()
于 2013-06-04T05:26:03.333 回答