Wie aktualisieren von Daten mit Raum-Datenbank?

Ich bin mit Raum-Datenbank aufgenommen und ich wollen, eine Zeile zu aktualisieren. Ich bin in der Lage, die Zeile zu aktualisieren, aber immer diese Warnung

12-05 20:59:17.635 29363-29372/com.Beispiel.parmarravi21.recyclerviewiv W/SQLiteConnectionPool: Ein SQLiteConnection-Objekt für die Datenbank ‚/data/user/0/com.Beispiel.parmarravi21.recyclerviewiv/Datenbanken/RecP10‘ zugespielt wurde! Bitte korrigieren Sie Ihre Bewerbung an end-Transaktionen in Bearbeitung ordnungsgemäß und schließen Sie die Datenbank, wenn es nicht mehr benötigt wird.

Dies ist mein code

//defining database
        db = Room.databaseBuilder(getActivity(), AppDatabase.class, "RecP10")
                .fallbackToDestructiveMigration()
                .allowMainThreadQueries().build();

      TimeDateModel timeDateModel = new TimeDateModel(positionTime, TimeMode);

                        ContentValues contentValues = new ContentValues();
                        contentValues.put("posItem", timeDateModel.getPosItem());
                        contentValues.put("TimeDateMode", timeDateModel.getTimeDateMode());

                        if (db.timeDao().getItemAtTimePos(positionTime) != null) {
                            Log.e(TAG, "updated database");
                            db.beginTransaction();
                            try {
                                db.getOpenHelper().getWritableDatabase().update("Datetime", 0,
                                                contentValues, "posItem =" + positionTime, null);
                                db.setTransactionSuccessful();
                            } finally {
                                db.endTransaction(); //commit or rollback
                                db.close();

                            }
                        } else {
                            Log.e(TAG, "New item added");
                            db.timeDao().insertAll(timeDateModel);
                        }

Ich habe auch versucht, die dao-update-Funktion aber die Daten nicht aktualisiert werden .

db.timeDao().update(timeDateModel);

Ich bin neu in der Datenbank in android bitte helfen Sie mir .

Github link für vollständige code

  • „Gibt es eine Möglichkeit, um die Daten zu aktualisieren?“ — ja, verwenden Sie eine @Update Methode auf die @Dao. „Bleiben die Daten gleich in der Datenbank und die erste nicht aktualisiert“ – wie werden Sie diese Entscheidung?
  • Hi @CommonsWare , ich bin mit diesem [link]( sqliteviewer.flowsoft7.com), um zu überprüfen, ob die Daten in der Datenbank ist es noch zeigen, die alten Daten auch nach der Verwendung von db.blinkSingleDao().update(blinkSingleModel); was mache ich hier falsch?
  • Naja, ich weiß nicht, ob Sie das herunterladen der geänderten Datenbank von Ihrem Gerät oder emulator, oder wie Sie sich immer, dass die geänderten Datenbank-tool. Hier ist ein Beispiel-Projekt von mein Buch, die zeigt, dass die Verwendung von @Update, komplett mit mess-tests, die zeigen, dass es funktioniert.
  • Ich benutzte diesen code um die Daten zu aktualisieren db.getOpenHelper().getWritableDatabase().update(dataSet.get(nextPos).getName(), 0, contentValues, "posItem =" + nextPos, null);
  • Hey, wenn Sie immer noch stecken, versuchen Sie dann Ihre primäre Schlüssel, indem Sie zuerst immer aus der db. Raum braucht Ihre richtige Primärschlüsselwert zu aktualisieren Sie Ihre Einträge.
InformationsquelleAutor Ravi Parmar | 2017-12-03



2 Replies
  1. 1
    @Query("UPDATE Test SET test_name=:arg1,test_startDate=:arg2,test_endDate=:arg3,test_location=:arg4,test_ringerMode=:arg5,test_latitude=:arg6,test_longitude=:arg7 WHERE testId = :arg0")
    fun updateTest( testId: Int,testName:String,testStartTime:String,testEndTime:String,testLocation:String,testRingerMode:Int,testLatitude:Double,testLongitude:Double)

    Versuchen, Code auf diese Weise.

  2. 0

    Mit einer @Update annotation sollte den trick tun , und nach der Android-Entwickler-Dokumentation, die sollte man nicht führen Sie Datenbank-Abfragen auf der Haupt-Thread ,also könnte die Ursache Ihrer Datenbank Probleme

    Etwas wie diese

    @Update
    void updateTimeEntry(TimeEntry timeEntry)

    mit TimeEntry wird der name des Modells, Klasse

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.