Android 从表中获取多个值 public List getDays(长iid) { 列表天数=新建ArrayList(); cursor=database.query(MySqliteHelper.TABLE_REPEAT,daysColumn,MySqliteHelper.COLUMN_TID+“=”+iid,null,null,null,null); 而(fg>=1) { cursor=database.query(MySqliteHelper.TABLE_REPEAT,daysColumn,MySqliteHelper.COLUMN_TID+“=”+iid,null,null,null,null); stringday=cursor.getString(cursor.getColumnIndex(MySqliteHelper.COLUMN_DAYS)); 天。添加(天); cursor.moveToNext(); if(cursor.isAfterLast()) { fg=0; } } cursor.close(); fg=1; 返程天数; }
现在我得到了Android 从表中获取多个值 public List getDays(长iid) { 列表天数=新建ArrayList(); cursor=database.query(MySqliteHelper.TABLE_REPEAT,daysColumn,MySqliteHelper.COLUMN_TID+“=”+iid,null,null,null,null); 而(fg>=1) { cursor=database.query(MySqliteHelper.TABLE_REPEAT,daysColumn,MySqliteHelper.COLUMN_TID+“=”+iid,null,null,null,null); stringday=cursor.getString(cursor.getColumnIndex(MySqliteHelper.COLUMN_DAYS)); 天。添加(天); cursor.moveToNext(); if(cursor.isAfterLast()) { fg=0; } } cursor.close(); fg=1; 返程天数; },android,Android,现在我得到了arrayindexoutofbound异常!!我不熟悉安卓和编程。。 建议我应该使用什么技巧 我的日志显示: 03-06 11:20:12.941:E/AndroidRuntime(2025):致命异常:主 03-06 11:20:12.941:E/AndroidRuntime(2025):java.lang.RuntimeException:无法启动活动组件信息{com.example.habitator/com.example.habitator.AlarmDays}:andr
arrayindexoutofbound
异常!!我不熟悉安卓和编程。。
建议我应该使用什么技巧
我的日志显示:
03-06 11:20:12.941:E/AndroidRuntime(2025):致命异常:主
03-06 11:20:12.941:E/AndroidRuntime(2025):java.lang.RuntimeException:无法启动活动组件信息{com.example.habitator/com.example.habitator.AlarmDays}:android.database.CursorIndexOutOfBoundsException:请求索引-1,大小为1为什么再次查询数据库?如果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);
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;
}
public List getDays(长iid)
{
列表天数=新建ArrayList();
cursor=database.query(MySqliteHelper.TABLE_REPEAT,daysColumn,MySqliteHelper.COLUMN_TID+“=”+iid,null,null,null,null);
cursor.moveToFirst();
而(fg>=1)
{
if(cursor.isAfterLast())
{
fg=0;
中断;//中断循环
}
stringday=cursor.getString(cursor.getColumnIndex(MySqliteHelper.COLUMN_DAYS));
天。添加(天);
cursor.moveToNext();
}
cursor.close();
fg=1;
返程天数;
}
希望这对你有用 Cursor c=db.rawQuery(“从表_name中选择*,其中user_fk=”+get_userid+”,null);
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;
}
列表=新的ArrayList();
c、 moveToFirst();
而(!c.isAfterLast())
{
title=newstring[]{c.getString(3),c.getString(0)};
列表。添加(标题);
c、 moveToNext();
}
c、 close();
db.close();
1.使用数组从表中获取多个值
2.之后,将该数组值存储在列表中。亲爱的,您是否确切知道什么是
光标
?你用上面的代码做什么?我已经编辑了我的问题。请检查我是否编辑了我的代码。在获取-1索引时,首先检查cursor.isAfterLast()是否正确,如果是,则中断循环,如果不是,则只执行下一个代码我的程序现在不会崩溃,但只显示一行。事实上,有一排带约束的鬃毛!!我真的不明白为什么它不能添加!!是否已从while循环中删除了database.query()代码?您已经写了两次,它再次初始化同一个游标。不需要在while循环中写入它。请查看代码以供参考,并让我知道它是否有效对不起,我是StackExchange的新手,没有足够的声誉可以投票:(但如果我有足够的声誉可以投票,我会确定:)
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();