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