2010-06-19 6 views
2

J'ai utilisé une base de données SQLite, Theres une situation où j'ai une liste qui affiche toutes les données de champ "nom" d'une table "table1". Maintenant j'ai un bouton pour insérer des données dans "table1". La liste est remplie en utilisant un adaptateur de curseur simple qui est passé un curseur "cursor1" rempli avec les données. "cursor1" est préparé en utilisant la requête SQLite - "SELECT * FROM table1". Maintenant, au moment où j'insère des données, j'ai besoin de mettre à jour la liste aussi.choisir entre requery ou renvoyer la requête dans SQLite

Ma question est-

  1. sera le sens Adapter le changement de base de données automatiquement (je suppose que non)?
  2. à l'aide cursor1.requery() est correcte ou devrais-je utiliser cursor1 = db.query("table1", null, null, null, null, null, null);

Il serait utile que vous pouvez jeter un peu de lumière sur lequel 1 est mieux et dans quelle situation. Coz pour la situation que j'ai expliqué ci-dessus, la commande requery() ne donne pas un résultat valide tandis que le 1 plus tard fonctionne très bien. Je ne comprends toujours pas quel pourrait être le problème.

Répondre

1

Est-ce que l'adaptateur détectera automatiquement la base de données (je suppose que non)?

Non, le Adapter ne détectera pas le changement de base de données automatiquement.

utilisant cursor1.requery() est correcte ou doit utiliser i Cursor1 = db.query ("Table1", null, null, null, null, null, null);

Utilisez requery(). Here is a sample project d'un de mes livres démontrant la technique.

+0

bien merci beaucoup Mark! mais j'utilise un code où j'insère quelques valeurs dans "table1" et appelle alors la fonction de requery, ceci didnt séance d'entraînement. La table était initialement vide, plus tard j'ai inséré la valeur et le requery n'a renvoyé aucun résultat. Mais quand j'ai utilisé cursor1 = db.query ("table1", null, null, null, null, null, null); , il m'a renvoyé les valeurs ... wat devrais-je comprendre de cela ?? S'il vous plaît jeter un peu de lumière sur ce ... – JaVadid

+0

Il semble que la méthode de requery a été obsolète: http://developer.android.com/reference/android/database/Cursor.html – tjb

+1

@tjb: Oui, cette réponse est de il y a plus de deux ans. Exécutez une nouvelle requête dans un 'AsyncTask' et permutez le nouveau' Cursor', ou utilisez le framework 'Loader'. – CommonsWare