IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linq Discussion :

Afficher une image


Sujet :

Linq

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut Afficher une image
    Bonjour,
    j'ai une procedure stockée qui affiche insert une image si elle n'existe pas la modifie si elle existe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ALTER proc [dbo].[uploadImage] 
    @ppr int ,
    @imagename varchar ,
    @imagecontent varchar,
    @imagebinary image
     
    as
     begin tran
     if exists (select ImageID from [ImageStorage] where ImageID = ( select codeimg from Agent where PPR=@ppr))
     begin 
    	--select ImageBinary from [ImageStorage] where ImageID = ( select codeimg from Agent where PPR=@ppr) 
    	update ImageStorage set ImageName= @imagename, ImageContentType=@imagecontent , ImageBinary=@imagecontent  where imageID = (select codeimg from Agent where PPR =@ppr)
     end 
     else 
     insert into ImageStorage (ImageName , ImageContentType, ImageBinary) values (@imagename ,@imagecontent,@imagebinary) 
     
    commit
    j'ai mon code qui enregistre dans ma BD mais lorsque je parcours et je selectionne encore une image on me dit que la clé est dupliquée ou quelque chose de ce genre sachant que si elle existe il doit modifier l'image selon cette clé (comme j'ai fais dans ma proc mais je dois appliquer cela en c#) bref voila le code qui enregistre dans la BD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #endregion
       try
                    {
     
                        string filename = ImageUpload.FileName;
                        byte[] filebyte = ImageUpload.FileBytes;
                        Binary binaryObj = new Binary(filebyte);
                        DataClasses1DataContext context = new DataClasses1DataContext();
                        context.ImageStorage.InsertOnSubmit(
                            new ImageStorage
                                {
                                    PPR = Convert.ToInt32(Session["Code"]),
                                    ImageContentType = ImageUpload.PostedFile.ContentType,
                                    ImageName = filename,
                                    ImageBinary = binaryObj
                                });
     
                        context.SubmitChanges();
                        this.LabelInfo.ForeColor = Color.Green;
     
                        this.LabelInfo.Text = "Upload ok.";
                    }
                    catch(Exception xcp)
                    {
                        this.LabelInfo.Text = xcp.Message;
     
                       this.LabelInfo.ForeColor = Color.Red;
                    }
     
                }
                #endregion
    bref ce n'est pas ça le problème , je ne sais pas comment utiliser ma proc en LINQ dans mon code c#.

    SVP aidez moi

  2. #2
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut
    aucune réponse :'(

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A priori d'après ce que je vois, tu utilises Linq to SQL et non pas Linq To Entities.

    Alors je ne me rappelle plus très bien comment les tables sont générées par le designer au niveau du code automatique, mais l'idée serait à peu près cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ImageStorage instanceImgStorage =
       (from img in context.ImageStorage
       where img.PPR = Convert.ToInt32(Session["Code"])
       select img).SingleOrDefault();
    if (instanceImgStorage != null)
    {
       //Dans ce cas on l'a trouvé et on va mettre à jour avec UpdateOnSubmit
       //"instanceImgStorage" a ses champs renseignés avec les valeurs extraites de la BDD.
    }
    else
    {
       //Dans ce cas elle n'existait pas et on va créer une nouvelle instance de ImageStorage
       //puis faire un "InsertOnSubmit"
    }
    Voilà l'idée.

    Pour la requête Linq, on peut faire encore plus court ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ImageStorage instanceImgStorage =
       context.ImageStorage.SingleOrDefault(img => img.PPR = Convert.ToInt32(Session["Code"]));
    Cela t'aide-t-il?

    Ah oui, j'oubliais : c'est quoi "Agent" dans ta PS? Une autre table? Si c'est le cas, les requêtes ne sont pas bonnes car il faut faire une jointure avec celle-ci...
    Il me faudrait idéalement les tables auxquelles tu veux accéder et les classes générées correspondantes avec Linq to SQL...

  4. #4
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut
    bonjour ,
    dessolée pour le retard ,
    oui Agent est une table que la colonne PPR est sa clé primaire

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut
    dans ma PS il n y a que 2 tables avec lesquelles je travaille , ImageStoragee et Agent . voilà le code de ma classe .ashx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
      public void ProcessRequest(HttpContext context)
            {
               int pp = Convert.ToInt32(context.Request.QueryString["PPR"]);
               context.Response.ContentType = "image/jpeg";
                Stream strm = ShowEmpImage(pp);
                byte[] buffer = new byte[4096];
                int byteSeq = strm.Read(buffer, 0, 4096);
                    while (byteSeq> 0)
                        {
                             context.Response.OutputStream.Write(buffer, 0, byteSeq);
                             byteSeq = strm.Read(buffer, 0, 4096);
                        }   
            }
            public Stream ShowEmpImage(int pp)
            {
                    DataClasses1DataContext context1 = new DataClasses1DataContext();
                        var r = (from a in context1.ImageStorage where a.PPR == pp select a).First();
                        return new MemoryStream(r.ImageBinary.ToArray());          
     
            }
     
     
     
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    je ne sais pas si c'est correct et ce que je dois écrire dans mon load pour que l'image s'afficher (si c obligatoire de le faire )
    bref , moi voilà ce que j'ai écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    42
    43
    protected void Page_Load(object sender, EventArgs e)
            {
     try
                {
                    Byte[] imgbyte = null;
                    if (ImageUpload.HasFile && ImageUpload.PostedFile != null)
                    {
                        HttpPostedFile file = ImageUpload.PostedFile;
                        imgbyte = new Byte[file.ContentLength];
                        file.InputStream.Read(imgbyte, 0, file.ContentLength);
                    }
                    if (c.cn.State == ConnectionState.Closed)
                    {
                        c.cn.Open();
                    }
     
                    c.cmd = c.cn.CreateCommand();
                    c.cmd.CommandText = "DisplayImage";
                    c.cmd.CommandType = CommandType.StoredProcedure;
     
                    c.cmd.Parameters.Add("@ppr", SqlDbType.Int); 
                    c.cmd.Parameters.Add("@TypeOperation", SqlDbType.Int);
     
                    c.cmd.Parameters["@ppr"].Value = Session["Code"]; 
                    c.cmd.Parameters["@TypeOperation"].Value = 0;
                    int pp =Convert.ToInt32(c.cmd.ExecuteReader());
                    Label3.Text = ("id is   <br>" + pp);
                    Response.Write("Yosh!!!!!!!!!!");
                    Image1.ImageUrl = "~/ImageHandl.ashx?ppr=" + pp;
     
                }
                catch (Exception ex)
                {
                    Response.Write(ex.Message);
                }
                finally
                {
                    if (c.cn.State == System.Data.ConnectionState.Open)
                    {
                        c.cn.Close();
                    }
                }
    }

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Il faut juste mettre le code pour récupérer l'image dans ton Gestionnaire HTTP (fichier .ASHX). Ensuite tu peux voir s'il fonctionne bien en tapant directement dans ton navigateur l'URL qui va bien (par ex. http://www.tonsite.com/ImageHandl.ashx?ppr=NomImage). Une image doit s'afficher... Si rien ne s'affiche, c'est qu'il y a un problème dans le code du gestionnaire HTTP.

    Ensuite dans ta page (fichier .ASPX) il te suffit juste de faire par exemple :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="~/ImageHandl.ashx?ppr=NomImage" />
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. [VB.NET] afficher une image stockée dans une table
    Par matonfire dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/03/2004, 11h21
  2. Afficher une image JPG qui se trouve dans une bdd
    Par Harry dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/02/2004, 10h51
  3. Charger et afficher une image jpg avec les mfc
    Par glop - pas glop dans le forum MFC
    Réponses: 3
    Dernier message: 11/02/2004, 18h59
  4. Réponses: 2
    Dernier message: 04/02/2004, 22h32
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo