59 votes

Meilleur endroit pour fermer la connexion à la base de données

Je cherchais depuis un moment une réponse à ma question mais je n'ai pas obtenu ce dont j'avais besoin. J'ai une application avec un ListView et un formulaire où je peux ajouter un nouvel enregistrement à la base de données. Il n'y a donc pas beaucoup de requêtes à faire.

Comment gérer les connexions à la base de données ? Dois-je le fermer après avoir obtenu ce que je veux ou dois-je le garder ouvert jusqu'à la fermeture de l'application ? Je veux savoir quelle est la meilleure façon de penser aux performances et à la durée de vie de la batterie.

5voto

Darokthar Points 500

En général, je fermerais la connexion dans la fonction onDestroy() de l'activité qui a ouvert la connexion. Je fermerais () un curseur d'une base de données dans la fonction qui utilise le curseur.

 public MyActivity extends Activity{
    private myDatabase mDatabase; // myDatabase extends SQLiteOpenHelper
    private Cursor mCursor;

    public MyActivity(Context context){
        super(context);
        initMemberVariables();
    }

    public ElementButton(Context context, AttributeSet attrS){
    super(context, attrS);
        initMemberVariables();
    }

    public ElementButton(Context context, AttributeSet attrS, int defStyle){
        super(context, attrS, defStyle);
        initMemberVariables();
    }

    private void initMemberVariables(){
        mDatabase = new PSEdb(this.getContext());
    }

    private void getData(){
        mCursor = mDatabase.MyGetterFunction();
        while(mCursor.moveToNext()){
            try{
                // populate your data
            }catch(CursorIndexOutOfBoundsException ex){
                // handle the exception
            }
        }
        mCursor.close();
    }

    @Override
    public void onDestroy(){
        super.onDestroy();
        mDatabase.close();
    }
}

4voto

Tim Points 4483

L'établissement de la connexion à la base de données est coûteux. Si les connexions ne sont pas rares et que la base de données est locale, je garderais la connexion ouverte plutôt que de l'établir pour chaque opération d'écriture dans la base de données, comme vous le feriez généralement dans une application client-serveur qui doit s'adapter à accueillir un grand nombre d'utilisateurs simultanés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X