Verwenden Sie Einfügen oder Ersetzen in ContentProvider

7

Wenn ich überprüfen und sehen möchte, ob etwas in meinem ContentProvider existiert, was ich normalerweise tue, ist etwas Ähnliches

%Vor%

aber das bedeutet, dass ich immer einen unnötigen Database-Aufruf machen muss, um die Dinge zu verlangsamen, besonders die größere Anzahl an Überprüfungen in der Datenbank, die ich tun muss. Es muss einen besseren Weg geben, damit umzugehen, also muss ich nicht immer zuerst fragen.

Ich schaute auf diese Frage

Android Contentprovider - Aktualisierung innerhalb einer Einfügemethode

>

aber die Verwendung von insertWithOnConflict überprüft nur die Primärschlüssel-ID und in meinem Fall wird das nicht funktionieren, weil was ich überprüfe, ist nicht die ID, sondern eine eindeutige Zeichenfolge aus einer Server-Datenbank.

kann ich also etwas mit dem Content-Provider machen, also muss ich nicht immer eine Abfrage machen, um zu überprüfen, ob das Objekt bereits existiert?

    
tyczj 01.05.2014, 22:08
quelle

3 Antworten

19

Sie können eine UNIQUE-Einschränkung für Spalten haben, die sich von ID 1 unterscheiden. Beispiel:

CREATE TABLE TEST (_id INTEGER PRIMARY KEY AUTOINCREMENT, server_id INTEGER NOT NULL, name TEXT, UNIQUE(server_id))

Wenn Sie diese Tabelle verwenden, können Sie in der Einfügemethode Ihres Inhaltsanbieters Folgendes tun:

%Vor%

Ich hoffe, es hilft. Prost!

    
Eduard B. 02.05.2014, 15:21
quelle
5

Edy Bolos Antwort kann einfach als

geschrieben werden

CREATE TABLE TEST ( _id INTEGER PRIMARY KEY AUTOINCREMENT, server_id INTEGER NOT NULL, name TEXT UNIQUE ON CONFLICT REPLACE);

Fügen Sie UNIQUE ON CONFLICT REPLACE in der create table-Abfrage hinzu.

    
Neeraj Nama 12.01.2016 09:24
quelle
1

Edy Bolos Antwort kann wieder als

geschrieben werden %Vor%     
guest-418 25.04.2016 16:41
quelle