0

誰?これを理解するのを手伝ってください。android.database.cursorindexoutofboundsexception エラーが発生しましたが、その理由はわかりません。列に正しい名前を付けていると確信していますが、それでも取得しました。私がやろうとしているのは、指定された会社名の会社コードを取得することです。

ここに私のコード my 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
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 を操作する簡単な方法..

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