从表中获取多个值

时间:2013-03-06 10:30:04

标签: android

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

2 个答案:

答案 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.然后将该数组值存储在列表中。