【问题标题】:Can't find the Mistake in my Cursor initialization在我的光标初始化中找不到错误
【发布时间】:2019-03-30 13:12:47
【问题描述】:

对于更大的 APP 项目,我需要使用 SQLite 数据库。如果我的代码有效,我不会得到任何数据。而且我想我只是不理解光标对象。在这段代码中,我只是想取回一个名字,但是我的光标没有正确初始化,但我从 Android 开发人员那里得到了基本代码。所以我不知道为什么它不起作用。

public String getVorname (String nachname) {
    SQLiteDatabase db = this.getReadableDatabase();

    String[] projection = {ListeNamen.VORNAME};
    String selection =ListeNamen.NACHNAME+" = ?";
    String[] selectionArgs ={nachname};
    String sortOrder = ListeNamen._ID + " DESC";
    Cursor cursor = db.query(ListeNamen.TABLE_NAME,projection,selection,selectionArgs,null,null,sortOrder);

    cursor.moveToFirst();
    String vorname =cursor.getString(cursor.getColumnIndex(ListeNamen.NACHNAME));
    cursor.close();
    return vorname;
}

我会以字符串的形式返回“Jan”,但它显示了这个错误

java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
     at android.database.CursorWindow.nativeGetString(Native Method)
     at android.database.CursorWindow.getString(CursorWindow.java:438)
     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
     at com.example.mainaplikation.DBHelper.getVorname(DBHelper.java:58)
     at com.example.mainaplikation.MainActivity$1.onClick(MainActivity.java:29)

【问题讨论】:

    标签: java android sqlite android-sqlite cursor


    【解决方案1】:

    有了这个:

    String[] projection = {ListeNamen.VORNAME};
    

    您定义希望查询选择的列。
    所以你只需要ListeNamen.VORNAME 列。
    但是有了这个:

    String vorname =cursor.getString(cursor.getColumnIndex(ListeNamen.NACHNAME));
    

    您尝试检索结果中不存在的列ListeNamen.NACHNAME
    通过变量的名称vorname 我猜你想这样做:

    String vorname =cursor.getString(cursor.getColumnIndex(ListeNamen.VORNAME));
    

    但由于结果中只有 1 列,您也可以这样做:

    String vorname =cursor.getString(0);
    

    【讨论】:

    • 哇!感谢您的快速帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多