94 votes

Android SQLite: paramètre nullColumnHack dans les méthodes insert / replace

Le SDK Android dispose de quelques méthodes pratiques pour la manipulation de données avec SQLite. Toutefois, l' insérer et remplacer les méthodes d'utilisation de certains nullColumnHack paramètre d'utilisation je ne comprends pas.

La documentation explique par la suivante, mais que si une table contient plusieurs colonnes qui permettent à NULL? Je n'ai vraiment pas compris :/

SQL ne permet pas l'insertion d'une complètement vide de ligne, donc si initialValues est vide, cette colonne [/ligne pour remplacer] devront être explicitement attribuée une valeur NULL

193voto

CommonsWare Points 402670

Supposons que vous avez une table nommée foo où toutes les colonnes d'autoriser NULL valeurs ou ont des valeurs par défaut.

Dans certaines implémentations de SQL, ce serait SQL valide:

INSERT INTO foo;

Ce n'est pas valable dans SQLite. Vous devez avoir au moins une colonne spécifiée:

INSERT INTO foo (somecol) VALUES (NULL);

Donc, dans le cas où vous passez un vide ContentValues de insert(), Android et SQLite besoin d'une certaine colonne qui est sûr pour attribuer NULL . Si vous avez plusieurs de ces colonnes à choisir, choisir un autre via le mécanisme de sélection de votre choix: lancer de dés, Magic 8-Ball(TM), pièce de monnaie, cabine mate flip, etc.

Personnellement, j'avais venons de faire, il est illégal de passer un vide ContentValues de insert(), mais ils ne me demandez pas... :-)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X