Как получить дату последнего времени из таблицы sqlite - PullRequest
1 голос
/ 16 октября 2019

Я хочу получить дату последнего обновления таблицы SQLite .

Я получил класс DataHelper.

// Get the last sync date form app mysql table.
public Cursor getlastsyncdate() {
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor query =db.rawQuery("SELECT applastsync_adm FROM app_admins_adm ORDER BY applastsync_adm DESC LIMIT 1",null);

    return query;


}

В файле MainAtivty я получил следующее.

//
private void AdminsLastSynced() {
    Cursor query = SyncAdminsDatabaseHelper.getlastsyncdate();
    if(query.getCount()== 0){
        toastMessage("no result");
        return;
    }else{
        StringBuffer buffer = new StringBuffer();
        while (query.moveToNext()){
            buffer.append(query.getString(8));
        }

    }
}

Когда я запускаю запрос, я получаю ошибку ниже.

Попытка вызвать виртуальный метод 'android.database.Cursor com.example.photoapp.SyncAdminsDatabaseHelper.getlastsyncdate ()'на нулевую ссылку на объект

--------- beginning of crash
2019-10-16 10:27:20.352 30197-30197/com.example.photoapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.photoapp, PID: 30197
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.photoapp/com.example.photoapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor com.example.photoapp.SyncAdminsDatabaseHelper.getlastsyncdate()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor com.example.photoapp.SyncAdminsDatabaseHelper.getlastsyncdate()' on a null object reference
        at com.example.photoapp.MainActivity.AdminsLastSynced(MainActivity.java:100)
        at com.example.photoapp.MainActivity.onCreate(MainActivity.java:49)

Как получить таблицу форм последней даты.

1 Ответ

1 голос
/ 16 октября 2019

Вам нужно создать экземпляр SyncAdminsDatabaseHelper , то есть в настоящее время у вас есть строка

DataHelper SyncAdminsDatabaseHelper;

, которая только объявляет, что SyncAdminsDatabaseHelper будет указывать на экземпляр DataHelper. Тем не менее, он не указывает, какой экземпляр, и поэтому null .

Когда вы используете SyncAdminsDatabaseHelper = new DataHelper(this), предполагая, что это правильная подпись (это типичная используемая подпись), то естькогда экземпляр сконструирован, и поэтому на него можно указать / to.

Таким образом, вам необходимо кодировать SyncAdminsDatabaseHelper = new DataHelper(this), прежде чем пытаться использовать Cursor query = SyncAdminsDatabaseHelper.getlastsyncdate();.

...