2012-10-14 70 views
0

是否有可能使用2个不同的游标选择表:光标 - 安卓

这对表1

Cursor b = myDbHelper.getSchoolType(); 
String def = b.getString(0); 

这对于另一个表

c = myDbHelper.getAllSchoolData(); 
String abc = c.getString(0); 

我尝试检索数据从两个表使用两个光标,但它显示错误:

android.database.CursorIndexOutOfBoundsException : Index -1 requested, with a size of 2 

请帮助... 感谢所有种回答

回答

1

默认情况下,鼠标指针指向第一个条目(行)之前的位置,所以你需要把它移动到合适的位置,你可以读取数据之前从中。例如移动到第一个条目:

if(cursor != null && cursor.moveToFirst()) 
    String value = cursor.getString(0); 
    ... 
} 

有喜欢使用MoveToNext类似的方法(),moveToLast()等,看到reference page更多。

+0

感谢您的回答.....但它是2个不同的光标。 –

+0

我不知道我是否得到它。如果在你的代码中b和c是两个Cursor对象,它们应该是相互独立的,所以你应该检查它们是否为null并分别移动它们的光标指针。 –

+0

我的意思是你可以有两个Cursor对象,这两个Cursor对象是由两个不同表中的两个查询操作创建的,那么你应该检查它们是否为null,并分别像这样移动它们的光标指针,然后才能从中读取数据:“if(b! = null && b.moveToFirst()){//在这里您可以从b}中获取数据“和”if(c!= null && c.moveToFirst()){//这里您可以从c获取数据}“。 –

0

Cursor索引被置于-1时被取回。您需要将其移至第一个结果。为此,您有不同的选择,但这是我使用它的方式:

Cursor c = // Retreive your cursor; 
if (c != null) { 
    while(c.moveToNext()) { 
     // Code for each row 
    } 
} 

这将遍历所有游标行。

您应该始终阅读Android tutorials或检查SDK reference。学习阅读文档是程序员的基本技能。