无法从预先填充的SQLite数据库中检索单个记录

时间:2018-08-21 15:46:08

标签: android sqlite

我知道这种问题已经存在,并且已经有有效的答案,但是没有一个对我有用(也许我使用错误)。.我想从列"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);

我只从..列中获得第一个值。如何做我已经解释的..

1 个答案:

答案 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
}