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

Composants graphiques Android Discussion :

[SQLite] Afficher contenu dans une ListView


Sujet :

Composants graphiques Android

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut [SQLite] Afficher contenu dans une ListView
    Bonjour ,

    J'aurais un souci pour mettre le contenu de ma Base dans une listView pour l'affichage de la dite base.

    J'ai fait mes deux Class :
    - DataBaseHelper.java (ma class de travail sqlite)
    - DatabaseListActivity (mon Main)

    J'aurais besoin d'une aide concernant la mise en place de la déclaration pour mettre dans le ListView ... Merci.

    J'ai fait mon ArrayList et mon Cursor. Mais après sa reste flou .. malgré les essais que j'ai réalisés ...
    Sa marche très bien avec la liste Statique , mais avec une list venu de la bdd je n'arrive point.

    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
    package com.database.exploit;
     
     
    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
     
    public class DatabaseListActivity extends ListActivity {
     
    	/** Called when the activity is first created. */
     
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
     
     
         ListView lv1 ;
          String lv_arr[]={"Android","iPhone","BlackBerry","AndroidPeople","Symbian", "Saint-malo"};
     
         lv1=(ListView)findViewById(R.id.listView1);
         // By using setAdpater method in listview we an add string array in list.
        lv1.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr));
     
    }
    }
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    package com.database.exploit;
     
     
    import java.util.ArrayList;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
     
    public class DatabaseHelper extends SQLiteOpenHelper {
     
        private static String DATABASE_NAME = "ELECT.sqlite";
        private static final int DATABASE_VERSION = 4;
        private SQLiteDatabase db;
        private static String TABLE_LISTELEC = "LISTELEC1";
     
        private static String CREATE_TABLE_LISTELEC1 = "create table "
                + TABLE_LISTELEC + " ("
                + "nom TEXT NOT NULL," + "nom_marital TEXT NOT NULL"
                + "prenom VARCHAR(250) NOT NULL" +"datenaissance TEXT NOT NULL"+"bureau TEXT NOT NULL"
                + ")";
     
        public DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
            db = getWritableDatabase();
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_TABLE_LISTELEC1);
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_LISTELEC);
            onCreate(db);
        }
     
     
        /**
         * Charge le contenu de la table Listelec1
         * et retourne ce contenu sous la forme d'une liste de NOM + " " + PRENOM;
         */
        public ArrayList<String> getPersonnes() {
            ArrayList<String> output = new ArrayList<String>();
     
            String[] colonnesARecup = new String[] { "nom", "prenom" };
     
            Cursor cursorResults = db.query(TABLE_LISTELEC, colonnesARecup, null,
                    null, null, null, "nom asc, prenom asc", null);
            if (null != cursorResults) {
                if (cursorResults.moveToFirst()) {
                    do {
                        int columnIdxNom = cursorResults.getColumnIndex("nom");
                        int columnIdxPrenom = cursorResults
                                .getColumnIndex("prenom");
                        String nomPrenom = cursorResults.getString(columnIdxNom)
                                + " " + cursorResults.getString(columnIdxPrenom);
                        output.add(nomPrenom);
                    } while (cursorResults.moveToNext());
                } // end§if
            }
     
            return output;
        }
     
    }
    Je crois bien que il me manque qu'une chose sur mon Main de 2 3lignes ce qui va me frustrer je le sent !

    Cordialement ,

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    J'écrirais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DatabaseHelper dbh = new DatabaseHelper();
    ListView lvListe = (ListView)findViewById(R.id.listView1); 
    lvListe.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,dbh.getPersonnes()));
    A tester

    Il faut voir ce que renvoit ta fonction dbh.getPersonnes() si cela ne fonctionne pas!


    Au passage, ta fonction getPersonnes() peut être modifiée comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     public ArrayList<String> getPersonnes() {
            ArrayList<String> output = new ArrayList<String>();
            String[] colonnesARecup = new String[] { "nom", "prenom" };
            Cursor cursorResults = db.query(TABLE_LISTELEC, colonnesARecup, null,
                    null, null, null, "nom asc, prenom asc", null);
    		while (cursorResults.moveToFirst())
    		{
    			output.add(cursorResults.getString(0) + " " + cursorResults.getString(1));
    		}				
            return output;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Merci ,

    Du coup j'ai créer ma Classe : Personne.java , dans laquelle j'ai créer mes getter et Setter.

    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
    package com.database.exploit;
     
    public class Personne {
     
    		private String nom;
    		private String prenom;
     
    		public Personne(String nom, String prenom) {
    			this.nom = nom;
    			this.prenom = prenom;
    		}
     
    		public Personne(){}
     
    		public String getNom() {
    			return nom;
    		}
     
    		public void setNom(String nom) {
    			this.nom = nom;
    		}
     
    		public String getPrenom() {
    			return prenom;
    		}
     
    		public void setPrenom(String prenom) {
    			this.prenom = prenom;
    		};
     
    	}
    J'ai mis le bout de code que tu m'as indiquer (j'ai du rajouter un argument "null") tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DatabaseHelper dbh = new DatabaseHelper(null);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class DatabaseListActivity extends ListActivity {
     
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
     
     
         DatabaseHelper dbh = new DatabaseHelper(null);
         ListView lvListe = (ListView)findViewById(R.id.listView1); 
         lvListe.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,dbh.getPersonnes()));
     }}
    Mais au lancement de l'application j'ai un message d'erreur..

    Caused by : java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
    du coup j'ai essayer de renommer mon "listView1" en "list" , mais sa ne devais pas venir de là , mon erreur est rester la même après...

  4. #4
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    remplace ton extends listActivity en Activity!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Il me met une erreur de pointer maintenant o_o !

    java.lang.RuntimeException : Unable to start activity ComponentInfo{com.database.exploit/com.database.exploit.DatabaseListActivity
    java.lang.NullPointerException
    Screen en Pièce jointe.
    Images attachées Images attachées  

  6. #6
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Pouvons nous voir ta classe en entière? Le problème viens de la ligne 22!

  7. #7
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Et il faudrait plutot écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DatabaseHelper dbh = new DatabaseHelper(this.getApplicationContext ());

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Pas de problème je crois j'ai déjà mis tout les sources intégrales ,
    Maintenant celle qui a changer :

    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
    package com.database.exploit;
     
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
     
    public class DatabaseListActivity extends Activity {
     
    	/** Called when the activity is first created. */
     
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
     
     
         DatabaseHelper dbh = new DatabaseHelper(this.getApplicationContext ());
         ListView lvListe = (ListView)findViewById(R.id.listView1	); 
         lvListe.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,dbh.getPersonnes()));
     }}
    J'ai une erreur au niveau de la déclaration de mes Champs de bdd ...
    Images attachées Images attachées  

  9. #9
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Il te manque des virgules!

    Ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        private static String CREATE_TABLE_LISTELEC1 = "create table "
                + TABLE_LISTELEC + " ("
                + "nom TEXT NOT NULL," + "nom_marital TEXT NOT NULL"
                + "prenom VARCHAR(250) NOT NULL" +"datenaissance TEXT NOT NULL"+"bureau TEXT NOT NULL"
                + ")";
    Correction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        private static String CREATE_TABLE_LISTELEC1 = "create table "
                + TABLE_LISTELEC + " ("
                + "nom TEXT NOT NULL," + " nom_marital TEXT NOT NULL, "
                + "prenom VARCHAR(250) NOT NULL, " +"datenaissance TEXT NOT NULL, "+"bureau TEXT NOT NULL"
                + ")";

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Oh ... Le loose ...!!

    Donc cela compile , marche mais n'affiche pas de listView , j'ai bien mon TextView et en dessous un grand vide noir.

    Une idée ?

    (le listview existe et est bien déclaré)

  11. #11
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Tout d'abord, as tu des données dans ta base? Cela m'étonnerai tu n'as fait aucun insert ^^

    Sinon :
    _ ta listView est elle remplit?

    _ si tu affiches une liste statique, est ce que elle s'affiche ?

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Ma base est rempli de 37262lignes.
    il ma fallu un tit moment pour trouver comment la conformer en Sqlite mais elle est OK actuellement.


    Ma listView est-elle rempli ?
    Justement non , il y a un large emplacement Vide a l'endroit de la listView1

    Oui mes précèdent test avec des listes Statiques marchais parfaitement.

    Tel que :

    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
     
    public class DatabaseListActivity extends Activity {
     
    	/** Called when the activity is first created. */
     
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
     
     ListView lv1 ;
          String lv_arr[]={"Android","iPhone","BlackBerry","AndroidPeople","Symbian", "Bada"};
     
         lv1=(ListView)findViewById(R.id.listView1);
         // By using setAdpater method in listview we an add string array in list.
         lv1.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr));
     
    }
    }

  13. #13
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    OK du cout que te renvoie getPersonnes? Quel est sa taille?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    GetPersonne() = fait référence a personne.java , et me get le nom et le prenom ?

    [Hummm sa sent le drame .. ]

  15. #15
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par MisterS Voir le message
    GetPersonne() = fait référence a personne.java , et me get le nom et le prenom ?

    [Hummm sa sent le drame .. ]
    Mais alors où fais tu ta requête??? Donc est ce que ton getPersonnes() te renvoie un tableau rempli! Je pense que ton problème vient de là!

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Ok j'avais mal compris ..

    Ma requête je la fait ici :

    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
     /**
         * Charge le contenu de la table Listelec1
         * et retourne ce contenu sous la forme d'une liste de NOM + " " + PRENOM;
         */
        public ArrayList<String> getPersonnes() {
            ArrayList<String> output = new ArrayList<String>();
     
            String[] colonnesARecup = new String[] { "nom", "prenom" };
     
            Cursor cursorResults = db.query(TABLE_LISTELEC, colonnesARecup, null,
                    null, null, null, "nom asc, prenom asc", null);
            if (null != cursorResults) {
                if (cursorResults.moveToFirst()) {
                    do {
                        int columnIdxNom = cursorResults.getColumnIndex("nom");
                        int columnIdxPrenom = cursorResults
                                .getColumnIndex("prenom");
                        String nomPrenom = cursorResults.getString(columnIdxNom)
                                + " " + cursorResults.getString(columnIdxPrenom);
                        output.add(nomPrenom);
                    } while (cursorResults.moveToNext());
                } // end§if
            }
     
            return output;
        }
    Et justement GetPersonnes() , ne m'affiche rien .. et si je me trompe pas il devrait me renvoyer les enregistrement des champs nom/prenom , dans la listView1.Mais non ..
    Je n'ai aucune erreur dans mon DDMS..

  17. #17
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    pour moi, je ne voit aucun INSERT dans ton code! tu as en revanche un create ce qui va surement t ecraser tes donnés (assez etrange) si ta table existe deja!
    où ce situe ton .db? et tu sure qu il contient des données? ton probléme vient soit de la communication avec ta base, soit que ta base n a pas de données

    EDIT: sinon essaye mon code pour getPersonnes()

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Ohhh tu es bon !! Je pensais aussi quelle étais peu être vidée..

    Je suis allez voir et oui elle avais été vidée, du coup j'ai modifier mon code.

    pour enlever le OnUpgrade et OnCreate.

    Et maintenant cela marche , bon l'application prend un petit temps a ce lancer biensûr ... le mSize pleur un peu ^^

    CursorWindow : need to grow : mSize = 1048576, size = 16, freeSpace() = 4, numRows = 25218
    EDIT : Je n'arrive pas a atteindre : /data dans mon device ... je le vois mais je ne peu pas le deployer (contrairement au 2autres folder "mnt" et "system")

  19. #19
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    C'est normale tu n'as pas les droits en lecture!
    Il faut être root! Je n'ai jamais réussi à le faire jusqu'à aujourd'hui! Avec un émulateur tu peux par contre!
    Une solution pour récupérer ta base serait de l'enregistrer dans un autre répertoire accessible mais ca encore je ne sais pas le faire.

    D'ailleurs, j'ai posé cette question sur le forum cette semaine (cf. ici), il faut être patient et attendre la réponse!

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Oui c'est bien ce que j'avais remarquer ^^ ! Évidement on peu passer en Root mais perdre la garanti ... et ici le faire sur 25tablettes cela va vite être désagréable ... !

    Je suis en train d'essayer une technique de transfert interne (du dossier "Assets" vers /data/data/package/database/ ) ...

    1 - Je n'est pas d'erreur
    2 - il ne créais pas le folder
    3 - du coup il pop pas la base ^^ !

    Je t'en fais part si cela peu t'aider ou si tu veux travailler un peu dessus ^^ !

    Ensuite mon autres option sera un WebService pour populate ma base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
     
    public class ImportdatabaseActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    }    
        }

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    package com.importdatabase;
     
     
    	import java.io.FileOutputStream;
    	import java.io.IOException;
    	import java.io.InputStream;
    	import java.io.OutputStream;
    import java.util.ArrayList;
     
    	import android.content.Context;
    	import android.database.Cursor;
    	import android.database.SQLException;
    	import android.database.sqlite.SQLiteDatabase;
    	import android.database.sqlite.SQLiteException;
    import android.database.sqlite.SQLiteOpenHelper;
     
    	public class DatabaseHelper extends SQLiteOpenHelper{
     
    	    //Le path des bases du system Android (attention au nom du package de l'appli).
    	    private static String DB_PATH = "/data/data/com.importdatabase/databases/";
    	    //nom de la base
    	    private static String DB_NAME = "ELECT.sqlite";
    	    // la base
    	    private SQLiteDatabase myDataBase;
    	    // le context
    	    private final Context myContext;
     
    	    private static String TABLE_LISTELEC = "LISTELEC1";
     
     
    	    /**
                 * Constructeur
                 *
                 * @param context
                 */
    	    public DatabaseHelper(Context context) {
     
    	        super(context, DB_NAME, null, 1);
    	        this.myContext = context;
    	    }   
     
     
    	    /**
                 * On cré une base vide dans le system Android et on réécris dessus.
                 * */
    	    public void createDataBase() throws IOException{
     
    	        boolean dbExist = checkDataBase();
     
    	        if(dbExist){
    	            //On fait rien - La base existe déja.
    	        }else{
     
    	            //By calling this method and empty database will be created into the default system path
    	               //of your application so we are gonna be able to overwrite that database with our database.
    	            this.getReadableDatabase();
     
    	            try {
     
    	                //Copie de la base
    	                copyDataBase();
     
    	            } catch (IOException e) {
     
    	                throw new Error("Erreur de copie de la base !");
     
    	            }
    	        }
     
    	    }
     
     
    	    /**
                 * On Check la base pour voir si elle existe ou pas
                 *  
                 * @return true si la base existe, false si elle existe pas.
                 */
    	    private boolean checkDataBase(){
     
    	        SQLiteDatabase checkDB = null;
     
    	        try{
    	            String myPath = DB_PATH + DB_NAME;
    	            checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
     
    	        }catch(SQLiteException e){
     
    	            //Oups pas de base...
     
    	        }
     
    	        if(checkDB != null){
     
    	            checkDB.close();
     
    	        }
     
    	        //On retourn le booléen
     
    	        return checkDB != null ? true : false;
    	    }
     
     
     
    	    /**
                 * On copie la base depuis le dossier assets dans le dossier system des bases sous android dans la base vide fraichement créé.
                 *
                 * */
    	    private void copyDataBase() throws IOException{
     
    	        //On ouvre la base locale
    	        InputStream myInput = myContext.getAssets().open(DB_NAME);
     
    	        // On choisi l'endroit
    	        String outFileName = DB_PATH + DB_NAME;
     
    	        //On ouvre la base vide
    	        OutputStream myOutput = new FileOutputStream(outFileName);
     
    	        //On transfert...
    	        byte[] buffer = new byte[1024];
    	        int length;
    	        while ((length = myInput.read(buffer))>0){
    	            myOutput.write(buffer, 0, length);
    	        }
     
    	        //On ferme ...
    	        myOutput.flush();
    	        myOutput.close();
    	        myInput.close();
     
    	    }
     
     
    	    /**
                 *Fonction pour acceder à la base en mode lecture seul
                 **/
    	    public void openDataBase() throws SQLException{
     
    	        //on ouvre la base
    	        String myPath = DB_PATH + DB_NAME;
    	        myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
     
    	    }
     
    	    @Override
    	    public synchronized void close() {
     
    	            if(myDataBase != null)
    	                myDataBase.close();
     
    	            super.close();
     
    	    }
     
    	    @Override
    	    public void onCreate(SQLiteDatabase db) {
    	        // On ne crées pas de base
    	    }
     
    	    @Override
    	    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    	        // pas de mis a jour
    	    }
     
     
    	    // developper vos methodes d'acces à la base que vous appelerez dans la Main ETC....
     
    	}






    CF : Ce tutoriel

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Contenu d'une base SQLite dans une ListView
    Par NeiloSS dans le forum Composants graphiques
    Réponses: 9
    Dernier message: 25/06/2016, 02h11
  2. [Débutant] Afficher le contenu d'une listview dans des textbox
    Par Martipit dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/04/2013, 15h01
  3. Affichage du contenu d'une BDD SQLite dans une ListView
    Par mike3012 dans le forum Composants graphiques
    Réponses: 17
    Dernier message: 26/08/2012, 03h34
  4. affiché "hello" dans une listView!
    Par Bindy dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 06/05/2010, 14h23
  5. Réponses: 0
    Dernier message: 24/07/2007, 13h22

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