begin process at 2012 02 08 19:17:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > INSERTION / RECUPERATION D'IMAGE STOCKEE DANS UNE DB MS SQL SERVER 2000

INSERTION / RECUPERATION D'IMAGE STOCKEE DANS UNE DB MS SQL SERVER 2000


 Description

Bonjour,

Ce petit bout de code fait avec visual studio 2003 (C#) permet de voir comment insérer et récuperer des images stockées dans la base de données.

Il vous suffit afin de le faire tourner de créer la db d'exmple et de creer la procédure stockée qui enregistre l'image dans la db et de placer vos paramètres de connection au serveur ms sql.
La structure de la db et la procédure se trouvent dans le fichier info.txt.

Ensuite, ouvrez le projet et allez modifier le fichier web.config en y plaçant votre chaine de connection au serveur sql.

<add key="Connect" value="VOTRE CONNECTION STRING"></add>

Lancer ça tourne...

Source

  • private void save(string nomcomplet)
  • {
  • //Avec la class FileInfo on peut recuperer la taille de l'image
  • FileInfo fiImage=new FileInfo(nomcomplet);
  • //On declare un tableau de la taille de l'image
  • this.m_lImageFileLength=fiImage.Length;
  • m_barrImg=new byte[Convert.ToInt32(this.m_lImageFileLength)];
  • //Avec l'objet FileStream on remplit le tableau de byte
  • FileStream fs = new FileStream(nomc,FileMode.Open,FileAccess.Read,FileShare.Read);
  • int iBytesRead=fs.Read(m_barrImg,0,Convert.ToInt32(this.m_lImageFileLength));
  • fs.Close();
  • //On ouvre la connection
  • SqlConnection myConnection = new SqlConnection();
  • myConnection.ConnectionString = ConfigurationSettings.AppSettings["Connect"];
  • //On specifie que c'est une procedure stockee
  • SqlCommand myCommand = new SqlCommand("SP_StockImage",myConnection);
  • myCommand.CommandType = CommandType.StoredProcedure;
  • //Parametre
  • myCommand.Parameters.Add("@Name", SqlDbType.VarChar, 50);
  • myCommand.Parameters.Add("@Picture", SqlDbType.Image);
  • //Les valeurs pour les parametres de la procedure stockee
  • myCommand.Parameters["@Name"].Value = Label1.Text;
  • myCommand.Parameters["@Picture"].Value = m_barrImg;
  • //Parametre de sortie
  • SqlParameter renvoitID = new SqlParameter("@ID_Recup",SqlDbType.Int, 4);
  • renvoitID.Direction = ParameterDirection.Output;
  • myCommand.Parameters.Add(renvoitID);
  • //Open connection
  • myConnection.Open();
  • //execution de la procedure stockee
  • int id = Convert.ToInt32(myCommand.ExecuteScalar());
  • //Close connection
  • myConnection.Close();
  • //On redirige
  • Response.Redirect("Affiche.aspx?lastID="+id);
  • }
private void save(string nomcomplet)
		{

			//Avec la class FileInfo on peut recuperer la taille de l'image
			FileInfo fiImage=new FileInfo(nomcomplet);
			
			//On declare un tableau de la taille de l'image
			this.m_lImageFileLength=fiImage.Length;
			m_barrImg=new byte[Convert.ToInt32(this.m_lImageFileLength)];
			
			//Avec l'objet FileStream on remplit le tableau de byte
			FileStream fs = new FileStream(nomc,FileMode.Open,FileAccess.Read,FileShare.Read);
			int iBytesRead=fs.Read(m_barrImg,0,Convert.ToInt32(this.m_lImageFileLength));
			fs.Close();

			//On ouvre la connection 
			SqlConnection myConnection = new SqlConnection();
			myConnection.ConnectionString = ConfigurationSettings.AppSettings["Connect"];
 
			//On specifie que c'est une procedure stockee
			SqlCommand myCommand = new SqlCommand("SP_StockImage",myConnection);
			myCommand.CommandType = CommandType.StoredProcedure;

			//Parametre
			myCommand.Parameters.Add("@Name", SqlDbType.VarChar, 50);
			myCommand.Parameters.Add("@Picture", SqlDbType.Image);

			//Les valeurs pour les parametres de la procedure stockee
			myCommand.Parameters["@Name"].Value = Label1.Text;
			myCommand.Parameters["@Picture"].Value = m_barrImg;

			//Parametre de sortie
			SqlParameter renvoitID = new SqlParameter("@ID_Recup",SqlDbType.Int, 4);
			renvoitID.Direction = ParameterDirection.Output;
			myCommand.Parameters.Add(renvoitID);
			
			//Open connection
			myConnection.Open();

			//execution de la procedure stockee
			int id = Convert.ToInt32(myCommand.ExecuteScalar()); 

			//Close connection
			myConnection.Close();

			//On redirige
			Response.Redirect("Affiche.aspx?lastID="+id);
		}

 Conclusion


Bonne journée
Christophe

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source .NET (Dotnet) AFFICHER LE CONTENU D'UNE FEUILLE EXCEL DANS UN DATAGRID
Source avec Zip Source .NET (Dotnet) [EXEMPLE] TRANSACTION
Source avec Zip Source .NET (Dotnet) PROCEDURE STOCKEE => INSERTION DES DONNEES DANS UNE TABLE
Source avec Zip Source .NET (Dotnet) P'TIT LIVRE D'OR EN C# AVEC UN FICHIER XML POUR STOCKER LES ...
Source avec Zip Source .NET (Dotnet) [EXEMPLE] CONTROLE DE VALIDATION

 Sources de la même categorie

Source avec Zip GESTION_ENSEIGNANTS par Elmarzougui
Source avec Zip ZONE MEMBRE EN ASP "E-MEMBRES1.0" par cmaelc
Source avec Zip Source avec une capture Source .NET (Dotnet) ADMINISTRATION BASE DE DONNÉES ORACLE par chbayah
Source avec Zip Source avec une capture Source .NET (Dotnet) UTILISATION D'UN DATASET par ManuAntibes
Source avec Zip BASE DE DONNEE DES CODES POSTAUX par Caius_junioricus

 Sources en rapport avec celle ci

Source avec une capture Source .NET (Dotnet) AJOUTER UNE IMAGE À UN BOUTON par PascalCmoa
Source avec Zip Source avec une capture Source .NET (Dotnet) UPLOAD FILE par bensoft2006
Source .NET (Dotnet) IMPORTER UN FICHIER EXCEL DEPUIS UN POSTE ET L'AJOUTER SUR L... par jseblavoie
Source avec Zip Source .NET (Dotnet) INSERER UNE PHOTO DANS UN CHAMP BLOB (IMAGE) DANS TABLE SQL ... par Myke
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW AVEC DES IMAGES par CSharpJSharp

Commentaires et avis

Commentaire de Malkuth le 08/11/2006 03:46:18

Salut

Petite question :
Pourquoi mettre un paramettre de retour et utiliser ExecuteScalare ?

Commentaire de jimmy69 le 09/11/2006 16:37:15

salut salut Malkuth,

Mhhh oui tu as raison en fait executescalar() renvoit un parametre !

a essayer mais en ce moment je fais autre chose mais des que j'ai des news je dis quoi !

par contre si tu sais m'en dire plus n'hesites pas mec !

Bonne fin de semaine
Christophe

Commentaire de Malkuth le 09/11/2006 17:14:30

Normalement Execute Scalar revoi le premier champ du premier enregistrement de la premiére selection renvoyer,

J'ai siament attirer ton attention dessus parce que j'ai eu un problème il ya qq temps, je faisait un return 1; ou un return 0; a la fin d'une procédure stocké sur SQL serveur et au moment de récupérer la valeur de retour : Pas moyen de tomber dessus avec ExecuteScalar!!! Et ca me semblai tellement logique pourtant que j'ai mis un moment avant de comprendre que le problème venai pas de la procédure stocké mais de l'utilisation de ExecuteScalar.

En remplacant Return 1; ou Return 0; par SELECT 1;/SELECT 0; ca marchait nickel. Mais il ne faut pas renvoyer de selection avant...

Désormai je passe par les table adaptateur dans les dataset, plus je l'ai utilise plus je les trouve pratique (J'ai mis jusqu'a 25 Procédure stocké sur un seule table adaptateur, l'avantage c'est qu'on travaille directement avec une fonction qui gere les parametre out comme des byref et renvoi direct un DataTable, Le seul hic c'est quand on renvoi plusieur table depuis la procédure stocké.


Voilou A +

Commentaire de jimmy69 le 10/11/2006 08:36:22

salut salut Malkuth,

Je te remercie pour ces infos, je voye que tu as l'air de bien connaitre le developpement !Moi je debute dans le developpement..

N'aurais tu pas des articles ou des exemples sur comment realiser un setup d'installation !? Je prepare une source la dessus mais je suis en manque d'exemple concret!

Je te remercie
Christophe

Commentaire de spidermario le 04/12/2006 17:54:25

C'est une source .Net, ça, non ?

Commentaire de jimmy69 le 05/12/2006 10:12:30

Salut salut,

Oui c'est du net 1.1

Christophe
Un bouillonnais

Commentaire de Chronolode le 16/03/2007 22:31:34

il n y a pas des problemes de securité ?!!!

Commentaire de jellalimounir le 30/03/2007 15:13:00

salut,
comment récuperer l'image dans un controle asp , par exple le controle image
et merci d'avant

Commentaire de Malkuth le 31/03/2007 03:35:19

Le plus simple a mon gout :

1-tu créé une page ASP
2-Dans le type Mime tu met "image/jpeg"(ou autre selon le type d'image)
3-tu récupère le binaire de l'image dans un buffer et tu le transmet au navigateur


ex :

Response.MimeType="image/jpeg"
'Récupération de l'image voulue dans BuffImage
Response.BinaryWrite(BuffImage)
Response.End()

Bon je pas le nom de toutes les fonction en tête donc t'attend pas a se que le code marche (mais alors vraiment pas!!!) mais c'est la démarche a suivre

ce qu'il faut retenir c'est que les navigateur ne tienne pas compte de l'extention du fichier(.aspx) mais du type mime pour gérér les contenus. La page peut prendre des param^tres commes toutes les pages asp(en URL ou en post), donc en passant en passant un ID tu peut renvoyedr la bonne image de la base de donnée. Enfin, il suffit de codé les autre page en fonction :
   <img src="MonImage.aspx?ID=<%= IDImage%>"/>
voilà j'espère que c'est clair je te laisse le soin de retrouvé toutes les bonne fonctions
PS: si tu as plusieurs type d'image, tu renseigne un champ avec le type mime dans la BDD et tu le met dinamiquement dans la reponse.
veille a ne pas laissé d'espace,retour a la ligne ou autre en dehors des <% et %> sinon ils risque d'être transmit avec l'image et de la corrompre.

PPS: tu peut utilisé la même technique pour transféré d'autre chose que des image(doc PDF par exemple)

Commentaire de Malkuth le 31/03/2007 03:37:43

Pour ce qui est du problème de sécurité, et bien c'est justement un autre problème!

Mais en combinant cette source avec d'autre traitant de sécurité, on doit pouvoir ce faitre un truc pas mal!

Commentaire de jellalimounir le 02/04/2007 18:29:49

merci, mais ma page est .aspx et il n y a pas de type mime

Commentaire de Malkuth le 03/04/2007 11:01:01

Si tu veux un .Net2 ca donne ca :

<%@ Page Language="VB" buffer="true" %>
<%
    Response.Clear()
    Dim ImageBuffer As Byte()
    Dim Mime As String
    Dim IDImage As Integer = 0
    If Not Integer.TryParse(Request("IDImage"), IDImage) Then
        Response.StatusCode = 500
        Response.StatusDescription = "IDImage Incorrect ou non fourni."
    End If
    'Récupération de MimeType et du
    'code binaire de l'image dans
    'les variables respective
    'Graceau paramêtre IDImage
    
    Response.ContentType = Mime
    Response.BinaryWrite(ImageBuffer)
    Response.End()
%>

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Compression dimage a l'upload [ par titopheux ] Bonjour à tous,Ca fait des lustres que je recherche le moyen de compresser une image à l'upload pour créer des miniatures automatiquement.Je sais que Reduire photo/image a l'upload [ par wally88 ] Bonjour, Suite a ce poste sans réponse positive ou negative je relance le sujet qui me serait d'un grande aide :http://www.aspfr.com/infomsg_REDUIRE-T upload et mdb [ par xclear ] Ca pas mal de pro ou moins pro connaisse cette méthode de download...qui marche très bien&lt;form method=post ENCTYPE="multipart/form-data"&gt;File : upload une image [ par touss ] BonjourVoila, j'essaye de l'int&#233;grer &#224; mon site mais j'ai cette erreur suivante.Erreur d'ex&#233;cution Microsoft VBScript error '800a0046'P Aide pour upload une image dans un dossier [ par NoorAlhoda ] salut , j'ai une web form qui contient le textbox pour le nom , un textbox pour une discription et un file upload pour une image . et pour la base do Upload d'une image ASP.net et C# [ par rabli ] Salut,j'ai un petit probleme: j'ai mis un control image sur ma page ASP.NETet un control FileUploadj'ai ajouter un bouton que j'ai codé de cette facon PROBLEME UPLOAD FICHIER ??????????????????? [ par kenza_sana ] Bonjour j'aimerait savoirc'est quoi exactement le upload de fichierSincerement j'ia lu pa sm'al d'article sur plusieur site mais c'est surtout en asp Upload d'images [ par EmacLi ] Bonjour à tous, J'ai un dossier contenant toutes les images de mes produits qui ne se trouve pas dans le répertoire du site mais dans [b]"C:/inetpub/ Prob upload et base de données [ par gooluk ] J'ai un probleme lors d'un upload de fichierj'upload une image, je verifie si mon image existe dans la base de donn&#233;es. Si elle exite j'aimerais GridView + photo [ par eddy69270 ] Bonjour ,J'ai un peu cherch&#233; sur les forum asp et c# sans trop de r&#233;sultat alors voila :Je souhaite afficher dans une GridView des photos st


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales