2010-12-09 43 views
2

Je veux obtenir le nombre d'enregistrements NOT NULL de ma base de données sqlite. Comme j'utilise le réglage automatique, la dernière ligne insérée ne me donnera pas le nombre réel d'enregistrements dans la table car même si je supprime un enregistrement intermédiaire, il sera inséré à la position supérieure au dernier enregistrement inséré. L'instruction insert me renvoie le numéro de la dernière ligne insérée, mais je veux cette valeur à la volée.Obtenir le nombre total d'enregistrements non NULL dans la base de données sqlite Android

Quelqu'un peut-il m'aider s'il vous plaît?

Merci d'avance.

Répondre

0

Faire un compte avant sur la table devrait fonctionner. Il suffit d'interroger la colonne id avec la vérification de NOT NULL et sur le curseur retourné, appelez le getCount()

Juste pour être sûr: vous ne devriez jamais, jamais vraiment, manipuler l'incrément automatique dans une base de données productive. Si vous supprimez un enregistrement, le "gap" devrait rester là. Cela n'a aucun impact sur les performances ou quoi que ce soit d'autre. Si vous insérez un nouvel enregistrement dans l'intervalle, vous pouvez créer beaucoup de problèmes ...

+2

Faire une requête COUNT() est probablement plus efficace, puisque le curseur sera effectivement rempli avec chaque ligne retournée . – EboMike

+0

Le curseur ne doit être rempli que si vous bouclez les résultats, n'est-ce pas? Quoi qu'il en soit, je n'avais pas en tête, que même la sélection de l'identifiant seul pouvait entraîner une énorme quantité. Donc c'est ton droit. +1 – WarrenFaith

+0

Oui, pas sur Android. Une requête renvoie un curseur entièrement rempli. – EboMike

0

Alors vous voulez juste trouver le nombre de lignes? (Il n'y a aucune telle chose comme un "enregistrement nul" pour autant que je suis au courant.)

Pouvez-vous pas seulement faire

select count(1) from YourTableName 

ou

select count(*) from YourTableName 

? (Certaines bases de données sont plus rapides en utilisant une forme ou autre ... Je ne sais pas sur sqlite.)