Вылет приложения при попытке взять данные из курсора в SQLiteOpenHelper

Учусь работать с SQLite в андроид-приложениях , но при попытке забрать данные из курсора возникает ошибка.

Код из класса базы данных:

public class DataHelper extends SQLiteOpenHelper {

private final static String DB_NAME = "tableBase";
private static final int DB_VERSION = 1;

public DataHelper(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    ContentValues SomeValues = new ContentValues();
    SomeValues.put("TIME_TEXT", "1");

    db.execSQL("CREATE TABLE MONDAY ("
            + "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
            + "TIME_TEXT TEXT);");

    db.insert("MONDAY", null, SomeValues);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
}

Вот код из MainActivity, где и возникает ошибка:

public class MainActivity extends AppCompatActivity {

SQLiteDatabase DataBase;
Cursor cursor;
String s;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    SQLiteOpenHelper DataHelper = new DataHelper(this);
    DataBase = DataHelper.getReadableDatabase();
    cursor = DataBase.query("MONDAY",
            new String[]{"_id", "TIME_TEXT"},
            "_id = ?",
            new String[]{Integer.toString(1)}, null, null, null);

    s = cursor.getString(1); //Из-за этой строчки все крашиться
    cursor.close();
    DataBase.close();
}
}

Лог ошибки:

2021-03-07 15:10:17.789 7148-7148/com.trayvor.sqltester E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.trayvor.sqltester, PID: 7148
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.trayvor.sqltester/com.trayvor.sqltester.MainActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:514)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:138)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:52)
**at com.trayvor.sqltester.MainActivity.onCreate(MainActivity.java:31) <-- это место выделяеться особенно
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java 85) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:223) 
at android.app.ActivityThread.main(ActivityThread.java:7656) 
at java.lang.reflect.Method.invoke(Native Method) 
at
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
2021-03-07 15:10:17.861 7148-7148/com.trayvor.sqltester I/Process: Sending signal. PID: 7148 SIG: 9

Ответы (1 шт):

Автор решения: Trayvor

Необходимо добавить cursor.moveToFirst() перед s = cursor.getString(1);

→ Ссылка