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 :

Récupérer des images à partir d'une BDD SQLite


Sujet :

Android

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Points : 82
    Points
    82
    Par défaut Récupérer des images à partir d'une BDD SQLite
    Bonjour,

    J'ai créé une table Jeu dans une BDD SQLite dans laquelle j'ai un attribut image de type blob. En effet, j'aimerais que mon application android récupère des images à partir de cette table. Donc j'ai fait ce qui suit:

    J'ai utilisé une méthode retriveRow pour récupérer l'enregistrement qui m'intéressait dans la BDD:

    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
     
    private void retrieveRow()
        {
        	try
        	{
        		// The ArrayList that holds the row data
        		ArrayList<Object> row;
        		// ask the database manager to retrieve the row with the given rowID
        	        row = db.getRowAsArrayJeu(longstockobtenue);
     
        		// update the form fields to hold the retrieved data
        	        nom.setText("Nom: "row.get(1).toString());
        		support.setText("Support: "+row.get(2).toString());
        		genre.setText("Genre: "+row.get(3).toString());
                    ......
                    .....
                    //Code que j'ai utilisé pour récupérer l'image bmp et l'affecter à l'ImageView img
        		byte[] bb =(byte[]) row.get(10);
                    img.setImageBitmap(BitmapFactory.decodeByteArray(bb, 0, bb.length));
        	}
        	catch (Exception e)
        	{
        		Log.e("Retrieve Error", e.toString());
        		e.printStackTrace();
        	}
        }
    Voilà le code de la méthode getRowAsArrayJeu(long ID) utilisé dans la méthode retrieveRow() par un objet db, objet d'une classe permettant de gérer les requêtes avec la BDD:

    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
     
    public ArrayList<Object> getRowAsArrayJeu(long rowID)
    	{
    		ArrayList<Object> rowArray = new ArrayList<Object>();
    		Cursor cursor;
     
    		try
    		{
    			cursor = db.query
    			(
    					table_jeu,
    					new String[] {je_id, je_nom, je_genre,je_support,je_editeur,je_date, je_noteamis, je_noteglobal, je_categorie,je_description,je_image},
    					je_id + "=" + rowID,
    					null, null, null, null, null
    			);
     
    			cursor.moveToFirst();
    			if (!cursor.isAfterLast())
    			{
    				do
    				{
    					rowArray.add(cursor.getLong(0));
    					rowArray.add(cursor.getString(1));
    					rowArray.add(cursor.getString(2));
    					.......
    					.......
                                            //Ajout du blob dans rowArray
    					rowArray.add(cursor.getBlob(10));
    				}
    				while (cursor.moveToNext());
    			}
    			cursor.close();
    		}
    		catch (SQLException e) 
    		{
    			Log.e("DB ERROR", e.toString());
    			e.printStackTrace();
    		}
    		// return the ArrayList containing the given row from the database.
    		return rowArray;
    	}
    Ensuite, tous les TextView apparaîssent correctement, par contre l'image ne s'affiche pas. Je ne comprends pas pourquoi.
    Pouvez vous m'aider s'il vous plaît?

    Je vous remercie par avance

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Déjà es tu obliger de sauvegarder entièrement ton image dans ta BDD , ne peux tu pas tout simplement sauvegarder son chemin d'accès .

    Ensuite essaye de déboguer ton application et regardes ce que tu récupères dans ta variable bb avant de faire le set sur ton imageView .

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Stocker tes images dans ta bdd est une grosses erreur de conception. Comme le dit Feanorin il est plus judicieux de stocker le chemin où trouver ton image.

    Avec des images dans des blob tu vas très vite rencontrer des problème de performance (surtout sur téléphone).

Discussions similaires

  1. Récupérer des données à partir d'une BDD MySQL
    Par dryra dans le forum Android
    Réponses: 5
    Dernier message: 04/03/2013, 12h01
  2. Récupérer des images à partir d'une BD MySql
    Par aladin2110 dans le forum Android
    Réponses: 3
    Dernier message: 14/08/2012, 17h34
  3. [MySQL] récupérer des images à partir d'une base de données mysql
    Par j_esti dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 21/04/2011, 13h34
  4. Récupérer des données à partir d'une BDD postgresql
    Par chimouch dans le forum Général Java
    Réponses: 1
    Dernier message: 30/03/2011, 18h21
  5. Réponses: 7
    Dernier message: 07/08/2009, 15h28

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