2012-06-14 3 views
5

Ich habe das folgende Datenbanktabellenobjekt:Aktualisieren Sie alle Spalten in ormlite Datenbanktabelle im Android

public class Goal { 
    @DatabaseField(generatedId = true) 
    private int id; 
    @DatabaseField 
    private String goal_title; 
    @DatabaseField 
    private String goal_desc; 
    @DatabaseField 
    private String goal_why; 
    ... 
} 

Ich habe einige Zeilen in diese Tabelle hinzugefügt und jetzt möchte ich eine Abfrage schreiben, um alle Spalten von a zu aktualisieren Zeile in dieser Tabelle. Ich habe Dokumentation von ORM gesehen und konnte keine Idee bekommen, wie man diese Abfrage schreibt. Bitte hilf mir, diese Anfrage zu schreiben.

Antwort

17

Ich denke, Sie brauchen RTFM. Ich habe eine lange Zeit auf der ORMLite Dokumentation verbracht und ich denke es covers the UpdateBuilder ziemlich gut. Fühlen Sie sich frei, um spezifischere Fragen zu stellen, und ich kann mehr Details hinzufügen, wenn nicht.

aus der Dokumentation zu zitieren:

Die DAO auch verwendet werden können benutzerdefinierte UPDATE und DELETE-Anweisungen zu konstruieren. Update-Anweisungen werden verwendet, um bestimmte Felder in Zeilen aus der Tabelle zu ändern, die mit dem WHERE-Muster übereinstimmen - oder alle Zeilen aktualisieren, wenn kein wo(). Delete-Anweisungen werden verwendet, um Zeilen aus der Tabelle zu löschen, die dem WHERE-Muster entsprechen - oder löschen alle Zeilen, wenn kein where().

den Beispielcode optimieren Sie Ihre Goal Objekt zu verwenden:

UpdateBuilder<Goal, Integer> updateBuilder = goalDao.updateBuilder(); 
// update the goal_title and goal_why fields 
updateBuilder.updateColumnValue("goal_title", "some other title"); 
updateBuilder.updateColumnValue("goal_why", "some other why"); 
// but only update the rows where the description is some value 
updateBuilder.where().eq("goal_desc", "unknown description"); 
// actually perform the update 
updateBuilder.update(); 

Hoffnung, das hilft.

+0

Vielen Dank Gray für Ihre Antwort und ich habe gerade diesen Code versucht, aber es gibt einen Fehler in der letzten Zeile updateBuilder.update(), diese Update-Methode existiert nicht für den Typ updateBuilder. Es gibt zwei andere Methoden, updateColumnExpression und updateColumnValue, aber nicht die update-Methode. Bitte helfen Sie, wenn Sie mein Problem bekommen. Danke nochmal – Munazza

+0

Das wurde in Version 4.34 hinzugefügt. Es ist kurze Hand für 'goalDao.update (updateBuilder.prepare());' – Gray

+0

goalDao.update (updateBuilder.prepare()); funktioniert auch nicht :(, und wieder ein Fehler, dass dies für Typ updateBuilder nicht definiert ist. Ich habe ormlite 4.30, sollte ich 4.34 verwenden? – Munazza

Verwandte Themen