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:
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:
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