Comment obtenir le nombre de lignes dans sqlite en utilisant Android?
Je suis entrain de créer le gestionnaire des tâches. J'ai tasklist et je veux que lorsque je clique sur tasklist nom si il vide ensuite il va sur Ajouter une Tâche, mais si il a 2 ou 3 tâches puis il me montre ces tâches en forme de liste.
J'essaie de compter dans la liste. ma requête de base de données, c'est comme:
public Cursor getTaskCount(long tasklist_Id) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor= db.rawQuery("SELECT COUNT (*) FROM " + TABLE_TODOTASK + " WHERE " + KEY_TASK_TASKLISTID + "=?",
new String[] { String.valueOf(tasklist_Id) });
if(cursor!=null && cursor.getCount()!=0)
cursor.moveToNext();
return cursor;
}
Dans Mon activité:
list_tasklistname.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0,
android.view.View v, int position, long id) {
db = new TodoTask_Database(getApplicationContext());
Cursor c = db.getTaskCount(id);
System.out.println(c.getCount());
if(c.getCount()>0) {
System.out.println(c);
Intent taskListID = new Intent(getApplicationContext(), AddTask_List.class);
task = adapter.getItem(position);
int taskList_id = task.getTaskListId();
taskListID.putExtra("TaskList_ID", taskList_id);
startActivity(taskListID);
}
else {
Intent addTask = new Intent(getApplicationContext(), Add_Task.class);
startActivity(addTask);
}
}
});
db.close();
}
mais quand je suis en cliquant sur tasklist nom, il est de retour 1, bot certain nombre de tâches en elle.
Vous devez vous connecter pour publier un commentaire.
À l'aide de
DatabaseUtils.queryNumEntries()
:ou (plus inefficace)
De L'Activité:
queryNumEntries()
méthode peut également prendreselection
etselectionArgs
paramètres. Voir developer.android.com/reference/android/database/...Utilisation android.la base de données.DatabaseUtils pour obtenir le numéro de compte.
Il est facile utilitaire qui a de multiples méthodes de wrapper pour réaliser des opérations de base de données.
c.getCount()
retourne1
parce que le curseur ne contient qu'une seule ligne (l'un avec le réelCOUNT(*)
). Le comte que vous avez besoin est laint
valeur de la première ligne du curseur.Je sais qu'il est répondu il y a longtemps, mais je voudrais partager cela aussi:
Ce code fonctionne très bien:
MAIS que faire si je ne veux pas compter toutes les lignes et j'ai une condition de l'appliquer?
DatabaseUtils ont une autre fonction pour cela:
DatabaseUtils.longForQuery
La
longForQuery
documentation dit:La performance, sympathique et vous faire économiser quelques temps et code réutilisable
Espère que cela va aider quelqu'un un jour 🙂
Pour l'interrogation d'une table pour le nombre de lignes dans cette table, vous voulez que votre requête soit aussi efficace que possible. Référence.
Utiliser quelque chose comme ceci:
Changer votre getTaskCount Méthode pour cela:
Ensuite, mettre à jour le gestionnaire de clic en conséquence:
Voyez-vous ce que le DatabaseUtils.queryNumEntries() n'? C'est affreux!
Je l'utilise.
Vraiment très simple à obtenir le nombre de lignes:
Une fois que vous obtenez le curseur, vous pouvez faire
Je suis un paresseux codeur, et de ne pas aller dans tous les que des méthodes supplémentaires, création de curseur, de concaténation de chaîne, une variable de la recherche, etc, sauf si elle est bénéfique.
Si tout ce que je veux, c'est un rapide comptage de lignes:
Je trouve la plaine de chaînes plus facile à lire! Ne m'obtenez pas le mal, je ne code plus détaillé de la manière que lorsque cela est nécessaire, mais si je peux le faire en une ligne je vais le faire!
Ce qui concerne,
Jacko
EDIT:
Juste regardé la date, vous avez probablement triés cela maintenant :/