Was ist der beste Weg in Android zu löschen alle Zeilen aus einer Tabelle
Ich habe einen WCF-Hexe bietet einige JSON-Daten und dann habe ich es speichern in der lokalen Datenbank. Funktioniert einwandfrei
Ich habe eine Aktivität Hexe füllt die Daten aus einer lokalen Datenbank in ein listview-Hexe, funktioniert einwandfrei.
public void fillData() {
// Fields from the database (projection)
// Must include the _id column for the adapter to work
String[] from = new String[] { TodoTable.COLUMN_SUMMARY };
// Fields on the UI to which we map
int[] to = new int[] { R.id.label };
getLoaderManager().initLoader(0, null, this);
adapter = new SimpleCursorAdapter(this, R.layout.todo_row, null, from,
to, 0);
lw.setAdapter(adapter);
}
Was ich nicht herausfinden kann, ist, was wäre der beste Weg, um löschen Sie alle Zeilen, die vor einem sync-Aktion, die von einem WCF.
Ich könnte dies tun, indem Sie die IDS aus der Datenbank, dann finden Sie die Zeile URI und verwenden Sie dann:
getContentResolver().delete(uri, null, null)
Ich denke nur, dass es einen besseren Weg sah ich viele Beispiele auf dem Netz, nutzt die DbHelper-Klasse, aber ich kann nicht herausfinden, wie Zugriff auf die dbHelper-Klasse von der Aktivität oder über die ContentProvider
Hoffe, dass macht keinen Sinn
getContentResolver().delete(uri, null, null)
ist ok ... aber uri sollte nicht zu bestimmten "Element", sondern auf ganze "dir" (content://com.authority/tablename/111
<= item uri content://com.authority/tablename
<= dir uri)Sie brauchen nicht, um alle id ' s der Datenbank, wenn Sie es tun auf diese Weise. Alles, was Sie tun müssen ist, geben Sie die uri der Datenbank und nicht auf ein bestimmtes Element
sorry, war gerade mich als newbish 🙁 @Selvin . Ihre Antwort es getan. Ty. Eine Antwort, so kann ich außer. der richtige code lautet: 'getContentResolver().löschen(TodoContentProvider.CONTENT_URI,null,null); '
dann beantworten sich deine Frage von selbst 🙂
mögliche Duplikate von alle löschen-Abfrage oder drop-query
InformationsquelleAutor Jester | 2013-10-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
DatabaseHelper
können Sie dies so tun:Zea wird dies nur löschen Sie alle Zeilen aus der angegebenen Tabelle. Weitere Infos: developer.android.com/reference/android/database/sqlite/..., java.lang.String, java.lang.String[])
dies ist nicht optimal, weil es nicht Benachrichtigung bei änderung der Daten. sollten Sie überschreiben Ihre delete-Methode im content provider
Die Frage über das löschen von Zeilen, nicht notyfing content-provider. Neben OP verwendet SimpleCursorAdapter Zeilen abrufen, so sehe ich nicht aus irgendeinem Grund zu informieren, content-provider.
Benachrichtigung der content-provider ist eine gute Praxis, wenn diese Zeile wird gezeigt in UI. wenn Sie r nicht mit Ihrer Datenbank in einer Ansicht, so never mind 🙂
InformationsquelleAutor Kristopher
Versuchen
Fallen lassen, alle Zeilen aus
<table_name>
man sollte Sie auch Lesen, das ist für
execSQL(String sql, Object[] bindArgs)
NICHT fürexecSQL(String sql)
. Der code, den ich gepostet ist in der Produktion verwendet, und funktioniert...ok also:
It has no means to return any data (such as the number of affected rows).
LÖSCHEN zurück Anzahl der betroffenenThe code I posted is used in production, and works
aber Sie sollten ermutigt werden, zu verwenden insert/update/delete statt (wie angegeben inexecSQL(String sql)
doc)und von android Quelle:
public void execSQL(String sql) throws SQLException {executeSql(sql, null);}
undpublic void execSQL(String sql, Object[] bindArgs) throws SQLException { /*null check*/executeSql(sql, bindArgs);}
... Sie haben die gleiche Funktion ...Und doch, mein code funktioniert immer noch, führen Sie die genaue Funktion der poster angefordert. Es ist einfach der Ausführung einer sql-Anweisung, Jester benötigt sql durchgeführt werden, wird diese Linie bis gut.
InformationsquelleAutor bclymer
Versuchen Sie es mit diesem code zum löschen aller Zeilen in einer Tabelle :
Ersetzen Sie einfach
database
für Ihre db-name undtablename
für die Tabelle, die Sie wollen, löschen Sie die ZeilenInformationsquelleAutor ShriKant A
Wenn Sie nur wollen, um zu löschen Sie alle Zeilen in einer Tabelle:
Und erstellen Sie dann die Tabelle mit den entsprechenden Spalten. Ich persönlich finde es viel einfacher, es zu tun auf diese Weise.
Ich in der Regel nahm eine patch-Ansatz, würden Sie halten die alte Schöpfung und wenden Sie alle erforderlichen update-Anweisungen in der Tabelle. Dann können Sie gelten alle Aussagen, die auf die Bildung (stellen Sie sicher scheitern, wenn es nicht zutreffend) und halten Sie up-to-date-pro starten. Diese funktioniert nicht so gut auf einem multi-Instanz-setup (oder wo Sie möchten, die zentrale db eingerichtet werden ordnungsgemäß vorher)
Dies wird nicht eine gute Idee, die Tabelle löschen. Jedoch finden Sie leicht die Lösung von eigenen SQL Abfrage löschen.
InformationsquelleAutor Rogue