sql >> データベース >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException

    インデックス2のアイテムを取得しようとしていますが、このインデックスは実際には存在しません(カーソルサイズが2であるため、インデックスは0,1です)。

    ループを変更する:

    if (result != null && result.moveToFirst()){
        do {
           Post post = new Post();
           post.setPostId(result.getInt(0));
           posts.add(post);
           ....
        } while (result.moveToNext());
    }
    

    これで正しく機能するはずです。

    注: moveToFirst()を呼び出すことを忘れないでください カーソルを最初のレコードに移動し(暗黙的に最初の行の前に配置されます)、読み取りの準備をするメソッド。これは、カーソルが有効かどうかをテストするための便利な方法でもあります。

    注2: 列インデックスを使用しないでください。カウントを間違える可能性があります。列名を使用する代わりに、このアプローチが一般的に推奨されます。 cursor.getColumnIndex("<columnName>")



    1. AndroidSQLiteの問題-テーブル...に名前の付いた列がありません

    2. OracleのLAST_DAY()関数

    3. 警告:mysql_fetch_array():指定された引数は有効なMySQLの結果ではありません

    4. ノードjsのmssqlクエリにパラメータを渡す方法