Une base de données SQL SERVER dans laquelle on insère des images jpeg.
Beaucoup de développeurs diront que c’est une erreur.
Pour ma part, je n’avais pas d’avis sur la question alors je me suis renseigné et j’ai testé.
Voici d’ailleurs, un exemple de commentaire de ce que j’ai trouvé sur les NewsGroups qui me semble résumer l’intérêt de cette solution.
« Il y a des situations où cela s'avère être une excellente idée. Notre application (médicale), utilisée (entre autres) par les huit plus grands hôpitaux de Norvège, stocke les images associées aux patients dans une DB SQL Server.
Nous avons choisi d'utiliser un serveur dédié (lié) pour y enregistrer les images, séparé du serveur d'exploitation contenant les données de patients proprement dites et nous ne ferions marche arrière (retour vers un file system) sous aucun prétexte.
La gestion des backups est uniforme, l'insertion d'une image dans un dossier patient peut être partie intégrante d'une transaction (la solution avec file system obligeant à recourir à une mécanique beaucoup plus complexe, basée sur MTS, par exemple), l'écriture de l'application client en est simplifiée ... »
Ce qui en ressort finalement c’est que, loin d’être une solution à proscrire, il y a beaucoup de cas ou cette solution facilite grandement notre pauvre vie de programmeur.
Alors, et pour ceux que ça intéresse (même à titre purement pédagogique), voici l’exemple d’une gestion d’images stockées dans une table SQL SERVER développé avec Visual Studio Net et le langage Vb.Net.
On
considère une table « Produits » liée avec une table « ImagesProduits » qui
pourraient se présenter comme cela : Attention, n’oubliez pas de mettre le type de donnée Image
au champ qui contiendra les images. Ca peu paraître évident mais j’en connais …
Ensuite, vous devez créer une procédure stockée qui va insérer l’image dans la
table.
CREATE
PROCEDURE InsertImage (@IdProduit int ,@Photo
image,@TypeImage Varchar(50),@Taille
bigint )
AS
INSERT INTO LesImages
(IdProduit,Photo,TypeImage,Taille)
VALUES
(@IdProduit,@Photo,@TypeImage,@Taille)
GO
Pour
Updater une image le plus simple c’est de la supprimer et d’insérer une
nouvelle image simultanément ou alors, vous pouvez vous amuser à créer une
procédure stockée UpdateImage mais bon … Sinon, du coté de SQL SERVER, vous
avez maintenant tout ce qu’il vous faut !!