2011-10-06 6 views
1

Je suis relativement nouveau dans Java et je souhaite utiliser un compteur pour enregistrer chaque image prise avec un identifiant unique. En enregistrant la variable compteur dans SQLite, je veux la récupérer à nouveau lorsque je redémarre l'application avec la même valeur que lorsque je l'éteins. Le problème est maintenant que le compteur saute des nombres (en sauvegardant le nom de fichier comme 0, 1, 3, 5 etc.). Et il redémarre à 0 lorsque je quitte et redémarre l'application.Enregistrer et récupérer un compteur dans SQLiteDatabase et l'utiliser pour enregistrer un nom de fichier unique

OnCreate, écrire et lire dans MosidaDb.java

@Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
       KEY_PHOTOID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       KEY_PHOTOPATH + " TEXT NOT NULL, " + 
       KEY_LOCATION + " TEXT, " + 
       KEY_AUDIOPATH + " TEXT, " + 
       KEY_DESCRIPTION + " TEXT);"); 

     db.execSQL("CREATE TABLE " + DATABASE_TABLE2 + " (" + 
       KEY_PHOTONAME + " INTEGER NOT NULL, " + 
       KEY_AUDIONAME + " INTEGER NOT NULL);"); 

    } 


public long dbEntry2(int photoname) { 
    ContentValues cv2 = new ContentValues(); 
    cv2.put(KEY_PHOTONAME, photoname); 
    return myDatabase.insert(DATABASE_TABLE2, null, cv2); 
} 

public int getPhotoid() { 

    Cursor c = myDatabase.rawQuery("SELECT * FROM NameTable", null); 

    int iQuery = c.getColumnIndex(KEY_PHOTONAME); 
    int result = 0; 

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
     result = result + c.getInt(iQuery); 
} 
    return result; 

} 

Voyez-vous quelque chose de mal dans ces méthodes? La variable counter est passée à dbEntry2 et récupérée par getPhotoid(). Ou c'est au moins ce que je veux qu'il fasse. grâce

+0

Les noms de fichiers que vous obtenez ne sont-ils pas 0, 1, 3, 6, 10, ...? – Caner

+0

1, 3, 5, 7, 9 maintenant. il semble donc que le compteur fonctionne deux fois. le plus gros problème est cependant que le compteur se réinitialise lorsque je redémarre l'application. – user982476

Répondre

0

Si dans le début:

database.beginTransaction(); 

alors vous devez appeler cela avant votre sortie de l'application:

myDatabase.setTransactionSuccessful(); 
myDatabase.endTransaction(); 

Cela devrait valider vos modifications.

Et vous devez toujours fermer votre curseur, lorsque vous avez terminé:

c.close(); 

Je ne sais pas pourquoi sautille compteur, vérifiez le contenu de votre base de données.

+0

Merci beaucoup! Le compteur a sauté parce que je l'ai égaré. J'ai réussi – user982476

Questions connexes