2010-09-12 21 views

Répondre

3

Jetez un oeil à cette réponse question: How to stores and Pictures in Db40?

republier ma réponse encore une fois, un peu mis à jour avec les liens vers la documentation Java:

Il y a two basic ways pour gérer Blobs. Soit vous stockez un blob comme byte-array dans la base de données, soit vous utilisez le db4o-Blob-Type spécial. Les deux ont leurs avantages.

Avantages/inconvénients tableau d'octets:

  • Les taches sont dans le fichier-db4o-base de données. Il n'y a donc qu'un seul fichier à copier.
  • Les tableaux d'octets font partie de la transaction db4o normale et se comportent comme prévu.
  • Lorsque vous stockez de gros blobs, vous risquez de rencontrer le database-size limitation of db4o. (256 GB)

Avantages/désavantagées avec db4o-blobs

  • Les taches sont stockées sous forme de fichiers réguliers en dehors de la base de données. Cela maintient la base de données elle-même petite. En outre, vous pouvez simplement accéder à tous les blobs stockés avec une application régulière.
  • Vous devez toujours copier le répertoire blob et la base de données.
  • Le db4o-blobs fonctionne en dehors de la transaction db4o. Cela signifie qu'un db4o-blob se comporte différemment de tout autre objet stocké (et l'API est un peu étrange). Cependant cela permet de récupérer un db4o-blob sans bloquer la transaction en cours.

Pour votre cas, je voudrais stocker un tableau byte [] avec l'image dans la classe Person. Ou vous créez une classe d'image spéciale. Cette classe d'image contient alors un byte-array avec l'image. Et quelques méthodes pour convertir ce byte-array depuis et vers un bitmap Winforms.