IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Connaitre la raison d'une erreur dans la console de plantage Google


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2002
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2002
    Messages : 203
    Points : 86
    Points
    86
    Par défaut Connaitre la raison d'une erreur dans la console de plantage Google
    Bonjour,

    J'ai des remonté d'erreur concernant mon application dans la console de dev Google, mais ce dernier me donne que le message d'erreur Java, et ne rajoute pas la raison :

    Exemple:

    En ce moment, j'ai une:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    java.lang.IllegalStateException: 
      at android.database.sqlite.SQLiteClosable.acquireReference (SQLiteClosable.java:55)
      at android.database.sqlite.SQLiteDatabase.executeSql (SQLiteDatabase.java:1689)
      at android.database.sqlite.SQLiteDatabase.execSQL (SQLiteDatabase.java:1685)
      at com.ledoc.scoreassistant.GenericBDD.updateCommentParty (GenericBDD.java:595)
      at com.ledoc.scoreassistant.Joueur$5.onClick (Joueur.java:237)
      at com.android.internal.app.AlertController$ButtonHandler.handleMessage (AlertController.java:166)
      at android.os.Handler.dispatchMessage (Handler.java:102)
      at android.os.Looper.loop (Looper.java:154)
      at android.app.ActivityThread.main (ActivityThread.java:6290)
      at java.lang.reflect.Method.invoke (Native Method)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886)
      at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)
    Mais je ne sais pas quel requête est exécutée, pour mieux identifier le problème, ou quel est le message d'erreur précis (comme dans la console développeur d'Android Studio).

    Mon code est très simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public boolean updateCommentParty(int idparty, String comment) {
            boolean result = true;
            bdd.execSQL("UPDATE " + MaDatabase.TABLE_PARTY
                    + " SET " + MaDatabase.COLUMN_PARTY_COMMENT + " = ? WHERE "
                    + MaDatabase.COLUMN_PARTY_ID + " = ? ", new String[]{comment,String.valueOf(idparty)});
            return result;
        }
    et les variables comment et idparty sont normalement bien identifiées.

    Comment pourrais je avoir le détail de l'erreur ?
    Je précise que j'arrive a cette erreur sur mon téléphone (en version release), mais pas sur le debugger.
    dbsanté: Ma première application Android consacré au suivi médical totalement déconnecté.
    Score Assistant: Dans un tout autre registre, une application pour compter les points de plus de 80 jeux !
    N'hésitez pas a les télécharger !!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut
    Tu as mis le code de updateCommentParty mais le problème vient surement d'ailleurs.
    Ta "bdd" est bien créée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLiteDatabase bdd= this.getReadableDatabase();
    Supprime tous les si tu en as

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2002
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2002
    Messages : 203
    Points : 86
    Points
    86
    Par défaut
    Hello,

    Merci pour ta réponse.

    Ma db est ouverte via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        public void open(){
            //On ouvre la base en écriture
            bdd = MaBaseSQLite.getWritableDatabase();
        }
    L'appel de cette fonction se fait par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
        private boolean AfficheModifCom(final int idparty) {
            boolean result = true;
    
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle(getString(R.string.modifcomment));
    
            datasource.open();
    
            final EditText input = new EditText(this);
            input.setInputType(InputType.TYPE_CLASS_TEXT);
            builder.setView(input);
    
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String newnom = input.getText().toString();
                    datasource.updateCommentParty(idparty,newnom);
                    datasource.close();
                }
            });
            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                    datasource.close();
                }
            });
    
            builder.show();
    
            return result;
        }
    Tu pense que ce sont les datasource.close(); qu'il faudrait sortir pour les mettre apres le builder.show ?

    Le hic aussi est que je n'arrive pas a reproduire le bug sur le debugger ( Il marche niquel sur mon AVD
    dbsanté: Ma première application Android consacré au suivi médical totalement déconnecté.
    Score Assistant: Dans un tout autre registre, une application pour compter les points de plus de 80 jeux !
    N'hésitez pas a les télécharger !!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut
    Je ne vois pas trop à quoi correspond exactement le datasource, mais pour ma part, j'aurais mis datasource.open(); dans la méthode datasource.updateCommentParty(idparty,newnom);

    Je n'ai pas l'explication technique, mais à mon avis, le problème vient du fait que tu ouvre la bdd puis l'utilises dans un listener (le onclick). A ce moment, la bdd est probablement refermée. Donc ouvre ta bdd directement dans le onClick, et même directement dans updateCommentParty

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public boolean updateCommentParty(int idparty, String comment) {
            boolean result = true;
            bdd = MaBaseSQLite.getWritableDatabase()
            bdd.execSQL("UPDATE " + MaDatabase.TABLE_PARTY
                    + " SET " + MaDatabase.COLUMN_PARTY_COMMENT + " = ? WHERE "
                    + MaDatabase.COLUMN_PARTY_ID + " = ? ", new String[]{comment,String.valueOf(idparty)});
            return result;
        }
    Et supprime les datasource.close(), c'est souvent source de bugs, et ca ne sert à rien, car la base se ferme toute seule quand elle n'est pas utilisée.

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2002
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2002
    Messages : 203
    Points : 86
    Points
    86
    Par défaut
    en fait j'ai une classe principale ou est déclaré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private GenericBDD datasource;
    et une classe GenericBDD ou sont déclarés toutes mes fonctions SQL

    Je vais tester ta méthode demain. Merci
    dbsanté: Ma première application Android consacré au suivi médical totalement déconnecté.
    Score Assistant: Dans un tout autre registre, une application pour compter les points de plus de 80 jeux !
    N'hésitez pas a les télécharger !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PYTHON 2.X comment gerer une erreur dans la console
    Par leptitom dans le forum Général Python
    Réponses: 2
    Dernier message: 28/04/2015, 23h04
  2. Réponses: 6
    Dernier message: 30/07/2010, 11h25
  3. Une erreur dans un script
    Par tsing dans le forum Linux
    Réponses: 9
    Dernier message: 16/03/2006, 15h50
  4. Comment détecter une erreur dans un process
    Par chuckboy dans le forum MFC
    Réponses: 3
    Dernier message: 25/10/2005, 10h40
  5. Comment lancer une erreur dans une procédure stockée
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/05/2005, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo