Das Android SDK verfügt über einige praktische Methoden zum Bearbeiten von Daten mit SQLite. Allerdings sowohl die Einfügung und ersetzen Methoden verwenden einige nullColumnHack
Parameter, dessen Verwendung ich nicht verstehe.
Die Dokumentation erklärt es wie folgt, aber was ist, wenn eine Tabelle mehrere Spalten hat, die dies zulassen NULL
? Ich verstehe es wirklich nicht :/
SQL erlaubt nicht das Einfügen einer komplett leeren Zeile, also wenn initialValues leer ist, diese Spalte [/row for replace] wird explizit zugewiesen a NULL
Wert.
Nehmen wir an, Sie haben eine Tabelle mit dem Namen foo
wo alle Spalten entweder erlauben NULL
Werte oder Voreinstellungen haben.
In einigen SQL-Implementierungen wäre dies gültiges SQL:
INSERT INTO foo;
Das ist in SQLite nicht gültig. Sie müssen mindestens eine Spalte angegeben haben:
INSERT INTO foo (somecol) VALUES (NULL);
Daher für den Fall, dass Sie ein Leerzeichen übergeben ContentValues
zu insert()
Android und SQLite benötigen eine Spalte, die sicher zugewiesen werden kann NULL
zu. Wenn Sie mehrere solcher Spalten zur Auswahl haben, wählen Sie eine über den Auswahlmechanismus Ihrer Wahl aus: Würfelwurf, Magic 8-Ball(TM), Münzwurf, Würfelwurf usw.
Ich persönlich hätte es einfach illegal gemacht, an einer Leerstelle vorbeizufahren ContentValues
zu insert()
aber sie haben mich nicht gefragt… 🙂