Muss ich _ID als SQlite-Primärschlüssel verwenden? und muss es ein INT sein? (Android Dev)

8

Das ist wahrscheinlich eine dumme Frage, aber ich konnte die Antwort noch nicht finden.

Ich möchte eine TEXT-Spalte mit eigenen eindeutigen Namen als Primärschlüssel in einer Tabelle verwenden. Der kleine Codeabschnitt, um dies zu definieren, sieht in meinem Projekt ungefähr so ​​aus:

%Vor%

Funktioniert das so, wie ich es vorschlage? Oder muss ich vielleicht "AS ID" verwenden? Ich sehe immer nur einzelne Tabellen mit _ID als autoinkrementierende Ganzzahl in. Auch das sollte ein Fremdschlüssel in einer anderen Tabelle sein, aber da ich meine Datenbank entworfen habe, habe ich mehr Informationen gelesen und ich bin mir nicht sicher, ob das wirklich wichtig ist Android & amp; SQLITE?

Danke an die Poster unten, aber ich bin ein bisschen langsam und nicht sicher, ob ich die Informationen richtig anwende, könntest du das überprüfen?

Wenn ich also eine create-Anweisung habe:

%Vor%

Dann haben:     db.execSQL ("SELECT-ID, ID AS CAT_ITEM_ID")

Kann ich sie dann austauschbar verwenden? Bin ich überhaupt irgendwo in der Nähe? haha Entschuldigung, ich versuche es!

    
Holly 30.11.2010, 12:55
quelle

3 Antworten

12

Sie können Tabellen erstellen und definieren, wie Sie möchten, aber wenn Sie die Tabelle über einen CursorAdapter verwenden müssen, der ohne eine Optimierung nicht funktioniert.

%Vor%

Sie müssen immer select col1 as _id ... ausgeben, um zu arbeiten.

Daher wird empfohlen, _id im Tabellenschema zu verwenden, und wenn Sie einen anderen Namen verwenden möchten, können Sie dies tun. select _id, _id as customname ... , also wähle die Spalte _id zweimal mit verschiedenen Namen.

    
Pentium10 30.11.2010, 13:16
quelle
3

Sie können alles, was Sie wollen, als Primärschlüssel verwenden.

Wenn Sie jedoch zum Beispiel einen CursorAdapter verwenden möchten, der automatisch Elemente aus einer Cursor-Abfrage anzeigt, benötigen Sie eine ganzzahlige Spalte namens _ID, da diese hier verwendet wird.

Aber wenn das nicht etwas ist, das Sie mit Ihrem Tisch verwenden möchten, können Sie tun, was Sie wollen!

    
Gober 30.11.2010 13:16
quelle
0

_id muss vom Typ int in sqlite create (long in Java) sein. Verschiedene Klassen nehmen das an. Daher können Sie UUID nicht als Primärschlüssel verwenden.

    
eugene 04.10.2013 11:35
quelle

Tags und Links