0
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): FATAL EXCEPTION: main 03-06 11:20:12.941: E/AndroidRuntime(2025): java.lang.RuntimeException: Unable to开始活动 ComponentInfo{com.example.habitator/com.example.habitator.AlarmDays}: android.database.CursorIndexOutOfBoundsException: 请求索引 -1,大小为 1

4

2 回答 2

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;
  }

希望这对你有用!

于 2013-03-06T11:20:30.933 回答
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.之后将该数组值存储在列表中。

于 2013-03-06T11:44:55.383 回答