2011-02-03 5 views
0

J'ai un problème intéressant où mon code fonctionne bien sur mon téléphone, mais lorsque je cours sur l'émulateur, je reçois un plantage dès que l'application essaie d'obtenir une valeur de la base de données.Crash Android SQLite dans l'émulateur mais pas le téléphone?

Voici la fonction DB Helper qui bloque il

/** Used to retrieve our lowest stored val */ 
public int GetLowestVal(){ 

    // Get our databases results 
    Cursor result = null; 
    try { 
     // Get our databases results 
     result = super.getAll(); 

    } catch(SQLException anyDbError) { 
     // Errors? TODO 
    } finally { 
     // Finally TODO 
    } 


    // Setup initial lowest val 
    int lowestVal = 0; 

    // Move through results and compare them 
    while(result.moveToNext()){ 
     // Get our place from the DB 
     int index = Integer.parseInt(result.getString(1).trim()); 

     // Last index should be lowest 
     if (index == 10){ 
      lowestVal = Integer.parseInt(result.getString(3).trim()); 
     } 
    } 

    // Return our value 
    return lowestVal; 

} 

Et l'erreur, il jette est:

getWriteableDatabase() a été appelé récursive.

+1

Montrez-nous une trace de pile complète s'il vous plaît. –

+0

Désolé, vous voulez dire la sortie logcat? –

Répondre

0

Je suis désolé, le problème était que je tentais de modifier la table encore dans la méthode onCreate() qui provoque getWrteableDatabase() être appelé récursive. La raison pour laquelle il ne fonctionnait pas sur l'émulateur mais travaillait sur le téléphone était que la base de données avait été créée sur le téléphone avant que quelque chose ne soit ajouté à onCreate, mais le déployer sur d'autres appareils a causé le plantage.

Questions connexes