2010-06-08 7 views
0

Je pense que c'est un peu facile mais je suis nouveau à la programmation android alors s'il vous plaît avoir de la patience. Je veux savoir comment puis-je obtenir le nombre d'enregistrements (lignes) dans une table spécifique dans mon DB. J'ai besoin de ceci pour que je puisse créer une boucle pour parcourir chaque enregistrement et ajouter chacun d'entre eux au tableau spécifique et l'afficher plus tard. C'est la source:Comment parcourir tous les enregistrements dans SQLite db?

db.openDataBase();   // open connection with db 

Cursor c = db.getTitle(5); // loop here through db, right now I'm fetching only one record 

startManagingCursor(c); 

//adding areas to the list here 

Area o1 = new Area(); 

o1.setOrderName(c.getString(1) + c.getString(2)); 

m_areas.add(o1); 

db.close(); 

Est-ce que n'importe qui peut m'aider avec ceci? Merci d'avance!

+0

Puis-je vous suggérer de placer 'db.openDataBase();' et le reste du code sauf 'db.close()' dans un try-block et placer l'appel de fermeture dans un bloc finally. Il s'assurera que vous essayez de fermer la base de données même s'il existe une exception dans votre code. – Skurmedel

Répondre

0

Vous avez vraiment pas besoin d'obtenir un compte de combien de premières; Au lieu de cela, créez une fonction db.getTitles() qui renvoie toutes les lignes et renvoie un curseur, puis boucle sur le curseur. En ce moment vous avez probablement une requête qui ressemble à SELECT ColumnA, ColumnB FROM Titles WHERE id = 5; copiez simplement la fonction, supprimez le paramètre et supprimez la clause WHERE pour qu'elle ressemble à SELECT ColumnA, ColumnB FROM Titles.

Alors votre code ressemblerait à quelque chose comme ceci:

db.openDataBase(); // open connection with db 
Cursor c = db.getTitles(); 
startManagingCursor(c); 

//adding areas to the list here 
if (c != null && c.moveToFirst()) { 
    do { 
     Area o1 = new Area(); 
     o1.setOrderName(c.getString(1) + c.getString(2)); 
     m_areas.add(o1); 
    } while (c.next()); 
} 

db.close(); 

Nous vérifions si la fonction retourne un curseur tout, puis passer au début du curseur et commencer à boucle, aller à l'élément suivant à chaque fois par. Pour plus d'informations sur l'interface Cursor voir l'API here, ou pour en savoir plus sur l'accès à la base de données et les pratiques de conception connexes mieux en général, je suggère de passer par le Notepad tutorial.

1

Pour obtenir le nombre de lignes dans le curseur, utilisez getCount.

Pour obtenir le nombre total de lignes dans un tableau, utilisez la solution reinierpost s ou sélectionnez une sélection pour sélectionner toutes les lignes du tableau et obtenir le nombre à partir du curseur. Je suppose que sa solution est plus rapide, sauf si vous avez réellement besoin de toutes les lignes de la table.

Une telle requête serait:

SELECT * FROM footable; 
Questions connexes