2

私はほとんどすべてが正常で、db とカーソルに関連する他のすべてのものを 4 重にチェックしました。クリックするとアクティビティにボタンがあり、他のクラスのパブリック関数から文字列にアクセスするために次のコードが実行されます。

DatabaseHandler dbfunc = new DatabaseHandler(getApplicationContext());
                    String deviceCODE = dbfunc.getUSERdetailsSTRING();
                    Log.i(TAG, deviceCODE);

以下は、DB ハンドラー クラスの public 関数です。

public String getUSERdetailsSTRING(){
        HashMap<String,String> user = new HashMap<String,String>();
        String selectQuery = "SELECT  * FROM " + TABLE_LOGIN;

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        // Move to first row
        cursor.moveToFirst();
        if(cursor.getCount() > 0){
            user.put("name", cursor.getString(1));
            user.put("email", cursor.getString(2));
            user.put("uid", cursor.getString(3));
            user.put("created_at", cursor.getString(4));
            user.put("Device Code", cursor.getString(5));
        }
        cursor.moveToFirst();
        String deviceCODE = user.get(KEY_UID);
        return deviceCODE;
    }

しかし、logcatで次のエラーが表示されます:

08-16 22:06:24.840: E/AndroidRuntime(25923): FATAL EXCEPTION: main
08-16 22:06:24.840: E/AndroidRuntime(25923): java.lang.IllegalStateException: Couldn't read row 0, col 5 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
08-16 22:06:24.840: E/AndroidRuntime(25923):    at android.database.CursorWindow.nativeGetString(Native Method)
08-16 22:06:24.840: E/AndroidRuntime(25923):    at android.database.CursorWindow.getString(CursorWindow.java:438)
08-16 22:06:24.840: E/AndroidRuntime(25923):    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
4

1 に答える 1

2

私が例を取った場所(http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/)その男はcursor.getString(1)からカウントを開始しました。from ONE ただし、ゼロ '0' で開始する必要があります。これで解決しました。

于 2013-08-16T16:55:29.233 に答える