Est le champ "_id" nécessaire dans Android SQLite?
Réponses
Trop de publicités?_id est utile lorsque vous utilisez le renforcement de Cartes qui rendent l'utilisation d'un Curseur (par exemple ResourceCursorAdapter). Il est utilisé par ces adaptateurs pour fournir un ID qui peut être utilisé pour se référer à la ligne spécifique dans la table qui porte le le point en ce que l'adaptateur est utilisé (par exemple, une ligne dans une liste).
Il n'est pas nécessaire si vous n'allez pas être en utilisant des classes qui ont besoin d'un _id colonne dans un curseur, et vous pouvez également utiliser "comme _id" pour en faire une autre colonne apparaît comme si elle appelle _id de votre curseur.
Pourquoi ne pas utiliser _ROWID_?
SQLite offre cela de toute façon, pour chaque ligne, de sorte que vous pouvez simplement alias pour _id dans votre instruction select.
Techniquement pas le champ _id
n'est pas nécessaire, cependant, si vous faites usage de l' CursorAdapter
classe (que vous êtes probablement, surtout si vous travaillez avec le bloc-notes exemple), alors oui
"Le Curseur doit inclure une colonne nommée "_id" ou de cette classe ne travail"
comme expliqué dans la documentation ici. Malheureusement, les exemples de code ne sont pas très claire à ce sujet.
C'est très pratique dans de nombreux cas, d'avoir un champ id. Je préfère la mienne pour être auto-incrémentation (comme illustré ci-dessous). Je suis toujours à la recherche de nouvelles utilisations pour le champ id :)
Quand vient le temps de fixer les données à une carte, j'aime utiliser un alias de nom de table pour interroger le champ id en tant que _id
. Exemple: SELECT id _id, msg from message order by id
. De cette façon, l'adaptateur voit un champ appelé" _id
et tout le monde est heureux.
Voici un exemple de la façon dont je définis mes tables:
CREATE TABLE message (_id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp INTEGER, tripID TEXT, msg TEXT);
Sûrement pas. Sa commodité champ que certains widgets comme ListView utilise pour générer les données. Voir ce bon article: http://www.casarini.org/blog/2009/android-contentprovider-on-sqlite-tables-without-the-_id-column/