public List<String> getDays(long iid)
{
List<String> days= new ArrayList<String>();
cursor = database.query(MySqliteHelper.TABLE_REPEAT, daysColumn, MySqliteHelper.COLUMN_TID + "=" + iid, null, null, null, null);
while(fg>=1)
{
cursor = database.query(MySqliteHelper.TABLE_REPEAT, daysColumn, MySqliteHelper.COLUMN_TID + "=" + iid, null, null, null, null);
String day = cursor.getString(cursor.getColumnIndex(MySqliteHelper.COLUMN_DAYS));
days.add(day);
cursor.moveToNext();
if(cursor.isAfterLast())
{
fg=0;
}
}
cursor.close();
fg=1;
return days;
}
现在我得到了arrayindexoutofbound
例外!!我是android和编程的新手..
建议我应该使用什么技术。
我的日志猫显示: 03-06 11:20:12.941:E / AndroidRuntime(2025):致命异常:主要 03-06 11:20:12.941:E / AndroidRuntime(2025):java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.habitator / com.example.habitator.AlarmDays}:android.database.CursorIndexOutOfBoundsException:Index请求-1,大小为1
答案 0 :(得分:0)
为什么再次查询数据库?如果cursor.isAfterLast()满足,则使用break。因为这个,你得到错误arrayindexoutofbound和
还指定cursor.moveToFirst();将光标移动到第一个位置
试试这个:
public List<String> getDays(long iid)
{
List<String> days= new ArrayList<String>();
cursor = database.query(MySqliteHelper.TABLE_REPEAT, daysColumn, MySqliteHelper.COLUMN_TID + "=" + iid, null, null, null, null);
cursor.moveToFirst();
while(fg>=1)
{
if(cursor.isAfterLast())
{
fg=0;
break; //brek the loop
}
String day = cursor.getString(cursor.getColumnIndex(MySqliteHelper.COLUMN_DAYS));
days.add(day);
cursor.moveToNext();
}
cursor.close();
fg=1;
return days;
}
希望这对你有用!
答案 1 :(得分:0)
Cursor c=db.rawQuery("select * from table_name where user_fk='" + get_userid + "'",null);
List<String[]> list = new ArrayList<String[]>();
c.moveToFirst();
while(!c.isAfterLast())
{
title=new String[]{c.getString(3),c.getString(0)};
list.add(title);
c.moveToNext();
}
c.close();
db.close();
1.使用数组从表中获取多个值。
2.然后将该数组值存储在列表中。