我知道这种问题已经存在,并且已经有有效的答案,但是没有一个对我有用(也许我使用错误)。.我想从列"DATABASE_CHILD_24"
中检索单个值,对应于DATABASE_ID
中的DATABASE_TABLE3
(“ _id”)5 .. ia如何实现这一点并在Mainactivity中使用它来获取字符串..我已经尝试过:
Database.java
public Cursor getDatabase9() {
String whereclause = DATABASE_ID + "=" + 1;
String[] col=new String[]{DATABASE_CHILD_24};
Cursor c= mDB.query(DATABASE_TABLE3, col,whereclause, null, null, null, null);
if (c != null)
{
c.moveToPosition(1);
return c;
}
return null;
}
MainActivity.Java
mDatabase = new Database(this);
mDatabase.open();
Cursor cursor = mDatabase.getDatabase9();
id = cursor.getString(cursor.getColumnIndex(Database.DATABASE_CHILD_24));
startManagingCursor(cursor);
但是我得到了例外:
java.lang.RuntimeException: Unable to start activity ComponentInfo{ma.ac.iav.menunaviagtion/ma.ac.iav.menunaviagtion.AboutUs}: android.database.CursorIndexOutOfBoundsException: Index 1 requested, with a size of 1
,如何正确执行?谢谢
第二个问题
我希望能够从一列=列1中检索很多值(例如,id1 = row1column1中的值1; id2 = value2 row 2column1 ..)
我尝试过的方法:
Database.Java
public Cursor getDatabase11() {
String[] col=new String[]{DATABASE_CHILD_24};
return mDB.query(DATABASE_TABLE3, col,null, null, null, null, null);
}
Mainactivity.java
mDatabase = new Database(this);
mDatabase.open();
Cursor cursor = mDatabase.getDatabase11();
cursor.moveToFirst();
id = cursor.getString(0);
startManagingCursor(cursor);
我只从..列中获得第一个值。如何做我已经解释的..
答案 0 :(得分:2)
将c.moveToPosition(1);
替换为c.moveFirst();
这些位置基于零,因此c.moveToPosition(1);
将移至不存在的第二位置。
尽管在您的c.moveFirst();
代码之后
MainActivity
很有意义
Cursor cursor = mDatabase.getDatabase9();
尝试:
mDatabase = new Database(this);
mDatabase.open();
Cursor cursor = mDatabase.getDatabase9();
if (cursor.moveToFirst()) {
id = cursor.getString(cursor.getColumnIndex(Database.DATABASE_CHILD_24));
startManagingCursor(cursor);
slogan.setText(id);
}
对于第二个,如果您想要3个ID而没有循环:
if (cursor.moveToFirst()) {
id = cursor.getString(0);
// your code here
}
if (cursor.moveToNext()) {
id = cursor.getString(0);
// your code here
}
if (cursor.moveToNext()) {
id = cursor.getString(0);
// your code here
}