Stocker une photo dans une base de donnée sql server
herman512
-
bokombejeanpapin -
bokombejeanpapin -
Bonjour,
j'ai un projet de fin d'année qui porte sur une application de gestion des etudiants d'une ecole j'aimerais sauvegarder les photos des etudiants dans une base de donnée sql server a travers visual Studio .net
donc SVP aider moi a le faire
merci
j'ai un projet de fin d'année qui porte sur une application de gestion des etudiants d'une ecole j'aimerais sauvegarder les photos des etudiants dans une base de donnée sql server a travers visual Studio .net
donc SVP aider moi a le faire
merci
1 réponse
-
Bonjour,
Tu as 2 possibilités :
1- Tu stockes le chemin de la photo dans ta BDD
https://forums.commentcamarche.net/forum/affich-10948327-comment-stoker-une-image-dans-sqlserver
https://sqlpro.developpez.com/cours/stockerimages/
2- Tu stockes directement la photo dans ta base
https://docs.microsoft.com/fr-fr/sql/relational-databases/blob/filetables-sql-server?redirectedfrom=MSDN&view=sql-server-ver15
https://docs.microsoft.com/fr-fr/sql/relational-databases/blob/binary-large-object-blob-data-sql-server?redirectedfrom=MSDN&view=sql-server-ver15
Il y a pas mal de débat sur POUR ou CONTRE le stockage de fichiers directement en BDD. Perso, pour des petits fichiers, je pense qu'il est plus pratique de les stocker directement dans la base. Ça évite des problèmes potentiels genre photo supprimée via explorateur et lien toujours existant dans la base, etc. et ça simplifie les sauvegardes puisqu'il suffit de sauvegarder uniquement la base.
Pour accéder aux fichiers directement stockés en base, il s'agit d'un FileStream classique donc simple à gérer.-
-
Je viens de retrouver un bout de code que j'avais fait il y a longtemps pour des tests. Ça peut t'aider même si ce n'est pas commenté ;-)
(c'est du VB.NET pour la partie lecture)
Pour enregistrer la photo :'Simple requête SQL à exécuter avec les bons paramètres DECLARE @img AS VARBINARY(MAX) SELECT @img = CAST(bulkcolumn AS VARBINARY(MAX)) FROM OPENROWSET(BULK 'PATH_DE_LA_PHOTO', SINGLE_BLOB) AS x INSERT INTO FICHIERS (FICHIER_PID ,FICHIER) VALUES (NewID() ,@img)
Pour lire une photo :Dim ConStr As String = ConStr = "Data Source=SERVEUR_BDD;Initial Catalog=BASE_DE_DONNEES; user id='USER'; password='PWD';" Dim con As New SqlClient.SqlConnection(ConStr) con.Open() Dim sqlCommand As New SqlClient.SqlCommand() sqlCommand.Connection = con sqlCommand.CommandText = "SELECT FICHIER FROM FICHIERS WHERE FICHIER_ID = 'xxx'" Dim Result As Object = sqlCommand.ExecuteScalar If IsDBNull(Result) Then 'PAS DE LOGO, ON NE FAIT RIEN Else Dim buffer As Byte() = Result ' Utilisation de la mémoire comme magasin de stockage du fichier Dim ms As MemoryStream = New MemoryStream(buffer) Dim image As Image = image.FromStream(ms) PictureBox.Image = image End If
-
-
-
-