2010-11-07 4 views
0

J'ai essayé de charger une liste de valeurs à partir d'une table, mais le curseur renvoie une longueur de -1?Cursor.getCount() est négatif (= -1)

Est-il possible d'afficher une base de données sqlite sur un émulateur android?

Le code qui est bogué:

final Cursor c = db.query(
    ACCESS_TOKEN_TABLE, 
    new String[] { ACCESS_TOKEN_COL_ID, ACCESS_TOKEN_COL_VALUE }, 
    ACCESS_TOKEN_COL_SERVER_ID + "=" + serverId, 
    null, 
    null, 
    null, 
    null); 

public static final String COL_ID = "_id"; 
public static final String ACCESS_TOKEN_TABLE = "accesstoken"; 
public static final String ACCESS_TOKEN_COL_ID = COL_ID; 
public static final String ACCESS_TOKEN_COL_SERVER_ID = "server_id"; 
public static final String ACCESS_TOKEN_COL_VALUE = "value"; 

Et il y a une entrée dans la base de données. La valeur de ServerID est 1 et il existe une entrée, où le ServerID est 1.

Sincèrement xZise

PS: Deux questions seulement pour ouvrir la base de données.

+0

Je vois deux questions ... –

Répondre

2

getCount() = -1 -> rien à compter ... (êtes-vous sûr que votre requête est OK?)

Ne sait pas sur l'affichage sqlite db avec émulateur Android, mais vous pouvez utiliser des applications comme Racine Explorer pour voir les bases de données.

3

vous avez une commande sqlite3 si vous "adb -e shell" avec une interface CLI à la base de données. mieux encore - je connais un plugin eclipse qui peut afficher le contenu de la base de données sqlite en utilisant le ddms. mais mon préféré est de sortir le fichier db de l'émulateur, et d'utiliser le navigateur de base de données sqlite pour voir le contenu.

+0

+1 mais pouvez-vous être plus précis? * "Je connais un plugin eclipse ..." *. Si vous le savez, svp dites nous ce que c'est ;-) –

0

Si le curseur est -1, l'instruction SQL ne renvoie aucun résultat. Peut-être que si vous deviez ajouter le code que vous utilisez pour votre instruction SQL select.

Quant à la seconde, l'affichage de la DB - Oui, il est possible:

  1. Dans Eclipse, vue DDMS, cliquez sur le nom de l'émulateur dans l'onglet Périphériques (Si l'onglet Périphériques ISN » t démontrant: Window-> Afficher Affichage-> Devices)

  2. Cliquez ensuite sur l'onglet Explorateur de fichiers (Si l'onglet ne montre pas: Window-> Afficher Affichage-> Explorateur de fichiers)

  3. Parcourez maintenant l'arborescence de fichiers. Vous devez aller à: data/data/com.package.name/databases

  4. Maintenant, cliquez sur le nom de la base de données que vous souhaitez inspecter. Vous devrez le copier sur votre ordinateur. (Pour ce faire, cliquez sur l'image d'une disquette avec une flèche sur elle. Faites quelque part, vous pouvez trouver.)

  5. Vous aurez besoin d'un navigateur SQLite, comme le SQLite Manager add-on for Firefox

  6. Dans Firefox , ouvrez le SQLite Manager (Outils-> SQLite Manager)

  7. Dans SQLite Manager, cliquez sur Base de données, Connect Database (Vous devrez peut-être modifier le type de fichier à partir SQLite DB Files (.sqlite;) à Tous les fichiers comme la DB Android ne doit pas avoir le.L'extension SQLite sur le fichier)

Une autre option est d'utiliser le plug-in pour Eclipse Questiod SQLite Browser - Je viens d'ajouter cela - rend le processus ci-dessus deux fois plus facile!

+0

Merci pour l'explication: Donc la table existe et ça n'a pas de sens. – xZise

+0

Si la table existe et que vous avez les données que vous attendiez, il y a peut-être un problème avec votre instruction select - postez l'instruction que vous utilisez pour remplir le curseur. – Scoobler

0

Ahr .... J'étais deux lignes à haute: Donc le problème n'est pas que le curseur renvoie une longueur négative, le problème est qu'il ne peut pas me donner les index des colonnes.

Je suis vraiment désolé. En raison d'une autre question tout à fait, j'ai posté une nouvelle question: Cursor doesn't find columns?

Sincèrement xZise