none
Como salvar uma imagem no meu banco de dados sql server usando C# Linq ? RRS feed

  • Discussão Geral

  • Boa Tarde Pessoal

    Eu tenho esse código de grava meus dados numa tabela no meu banco de dados sql server 2014.

                                     

       private void onInsert()
            {
                mdc = new ModelDataContext();


                    CADASTROTIMES CADASTROTIMES = new CADASTROTIMES();

                    //INSERT CAMPOS TABELA CADASTROTIMES
                    //CONTATOS.CODIGO = int.Parse(tbCodigo.Text);
                    CADASTROTIMES.TIME = TbTime.Text.Trim().ToUpper();
                    CADASTROTIMES.DIRETOR = TbDiretor.Text.Trim().ToUpper();
                    CADASTROTIMES.CAMPO = TbCampo.Text.Trim().ToUpper();
                    CADASTROTIMES.REGIAO = DropDownRegiao.Text.Trim().ToUpper();
                    CADASTROTIMES.TELEFONE = TbTelefone.Text.Trim().ToUpper();


                    //USUARIO
                    HttpCookie CookieUsuario = Request.Cookies.Get("CookieUsuario");
                    CADASTROTIMES.USUARIO = CookieUsuario.Value;

                    DateTime DataCadastro;

                    if (DateTime.TryParse(TbDataCadastro.Text, out DataCadastro))
                    {
                        CADASTROTIMES.DATA = DataCadastro;
                    }
                    else
                    {
                        CADASTROTIMES.DATA = Convert.ToDateTime(TbDataCadastro.Text);
                    }
                    mdc.CADASTROTIMES.InsertOnSubmit(CADASTROTIMES);
                    mdc.SubmitChanges();
                


            }

    Como eu salvo uma foto nesse meu codigo ?

    • Tipo Alterado Marcos SJ terça-feira, 10 de maio de 2016 20:04 How to
    quinta-feira, 5 de maio de 2016 20:31

Todas as Respostas

  • Boa noite

    Qual o tipo de atributo no banco "varbinary" ?

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 6 de maio de 2016 00:03
  • Boa Noite Silvaney

    Atributo do banco de dados sql server = image

    Nome do Campo = Data Type

    Logo                  = Image

    Pode me ajudar ?

    Obrigado

    sexta-feira, 6 de maio de 2016 01:17
  • Boa noite

    http://erikej.blogspot.com.br/2009/11/how-to-save-and-retrieve-images-using.html

    Olhe o método: "buttonStoreImageToDb_Click"

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 6 de maio de 2016 01:25
  • boa noite meu brother

    Analisei seu link. obrigado por enviar.

    Como eu vou fazer para adicionar uma imagem de uma galeria do meu micro ?

    Qual controle devo usar para incorporar nesse codigo ?

    private void buttonStoreImageToDb_Click(object sender, EventArgs e)
    {
    // Open the DataContext
    Database1 db = new Database1("Data Source=Database1.sdf");
    try
    {
    // Convert System.Drawing.Image to a byte[]
    byte[] file_byte = ImageToByteArray(pictureBox1.Image);
    // Create a System.Data.Linq.Binary - this is what an "image" column is mapped to
    System.Data.Linq.Binary file_binary = new System.Data.Linq.Binary(file_byte);
    Images img = new Images
    {
    Image = file_binary,
    ImageName = "Erik testing "
    };
    db.Images.InsertOnSubmit(img);
    }
    finally
    {
    // Save
    db.SubmitChanges();
    }
    }

    sexta-feira, 6 de maio de 2016 02:13
  • Boa noite,

    Você pode carregar a imagem assim:

    Image img = Image.FromFile("d:\\nomeimagem.png");
    byte[] imageArray = ImageToByteArray(img);

    Método para converter para array bytes:

    private byte[] ImageToByteArray(System.Drawing.Image imageIn)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            return ms.ToArray();
        }
    }

    Para salvar, no seu 'objeto atributo image' você passa o "imageArray".

    Espero ter ajudado.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 6 de maio de 2016 03:37
  • Boa Noite Silvanei

    Esta dando erro conforme abaixo:

    Erro de Servidor no Aplicativo '/'.

    Erro de Compilação

    Descrição: Erro ao compilar um recurso necessário para atender esta solicitação. Examine os detalhes específicos do erro e modifique o código fonte apropriadamente. 

    Mensagem de Erro do Compilador: CS1061: 'ASP.account_cadastrartime_aspx' não contém uma definição para 'FileUpLoad1_DataBinding' e nenhum método de extensão 'FileUpLoad1_DataBinding' aceita que um primeiro argumento de tipo 'ASP.account_cadastrartime_aspx' seja encontrado (você não está usando uma diretriz ou referência de assembly?)

    Erro de Origem:
    Linha 15:                                  <asp:Image ID="Image1" runat="server" />
    Linha 16:                                  <asp:Label Text="Logo" ID="label9" runat="server"></asp:Label>
    Linha 17:                                  <asp:FileUpload ID="FileUpLoad1" runat="server" ToolTip="Anexar Logo" 
    Linha 18:                                      OnDataBinding="FileUpLoad1_DataBinding"
    Linha 19:                                        /> 

    Arquivo de Origem: c:\ARTSIM\BreedSoccer\BreedSoccer\BreedSoccer\Account\CadastrarTime.aspx    Linha: 17 

    Meu codigo:

     <li>
                                     <asp:Image ID="Image1" runat="server" />
                                     <asp:Label Text="Logo" ID="label9" runat="server"></asp:Label>
                                     <asp:FileUpload ID="FileUpLoad1" runat="server" ToolTip="Anexar Logo" 
                                         OnDataBinding="FileUpLoad1_DataBinding"
                                           /> 
                                 </li>

    Codigo C#

                

     protected void FileUpLoad1_DataBinding(object sender, EventArgs e)
            {


                Image img = Image.FromFile(FileUpLoad1.FileName);
                byte[] imageArray = ImageToByteArray(img);
            }

    Pode me ajudar por favor.

    Fico no aguardo.

    Obrigado

    segunda-feira, 9 de maio de 2016 23:13
  • Bom dia Silvaney

    Deve estar muito ocupado

    Assim que tiver um tempinho e puder me ajudar no código acima eu gradeço muito.

    Fico no aguardo.

    Obrigado

    quarta-feira, 11 de maio de 2016 09:00
  • Exemplificando:

    Modelo do Linq (Linq to Classes)

    Página ASPX

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormImagem.aspx.cs" Inherits="WebApplication1.WebFormImagem" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:TextBox ID="TxtNome" runat="server"></asp:TextBox>
            </div>
            <div>
                <asp:FileUpload ID="FileUploadFoto" runat="server" />
            </div>
            <div>
                <asp:Button Text="Enviar" runat="server" ID="BtnEnviar" OnClick="BtnEnviar_Click" />
            </div>
            <div>
                <asp:GridView runat="server" ID="GridImagens" AutoGenerateColumns="False">
                    <Columns>
                        <asp:BoundField DataField="Nome" HeaderText="Nome" />
                        <asp:ImageField DataImageUrlField="Id"
                             DataImageUrlFormatString="GenericHandlerLoadImagem.ashx?id={0}" 
                            HeaderText="Imagem" 
                            ControlStyle-Width="100px" 
                            ItemStyle-Height="100px">                        
                        </asp:ImageField>
                    </Columns>
                </asp:GridView>
            </div>
        </form>
    </body>
    </html>

    Código Fonte:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using WebApplication1.Models;
    namespace WebApplication1
    {
        public partial class WebFormImagem : System.Web.UI.Page
        {
            protected DatabaseDataContext db;
            protected void Page_Load(object sender, EventArgs e)
            {
                db = new DatabaseDataContext();
                if (!IsPostBack)
                {
                    Load_Grid();
                }
            }
    
            private void Load_Grid()
            {
                GridImagens.DataSource = db.Imagens.ToList();
                GridImagens.DataBind();
            }
            protected void Page_Unload(object sender, EventArgs e)
            {
                db.Dispose();
            }
            protected void BtnEnviar_Click(object sender, EventArgs e)
            {
                Imagen img = new Imagen()
                {
                    Nome = TxtNome.Text,
                    Foto = new System.Data.Linq.Binary(FileUploadFoto.FileBytes),
                    Extensao = Path.GetExtension(FileUploadFoto.FileName).Replace(".","image/")
    
                };
                db.Imagens.InsertOnSubmit(img);
                db.SubmitChanges();
                Load_Grid();
            }
        }
    }

    + código: (Arquivo para exibir a imagem)

    using System;
    using System.Linq;
    using System.Web;
    using WebApplication1.Models;
    
    namespace WebApplication1
    {    
        public class GenericHandlerLoadImagem : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                try {
                    if (context != null
                        && context.Request != null
                        && context.Request.QueryString["id"] != null)
                    {
                        int id = int.Parse(context.Request.QueryString["id"].ToString());
                        DatabaseDataContext db = new DatabaseDataContext();
                        Imagen model = db.Imagens.FirstOrDefault(x => x.Id == id);
                        if (model != null)
                        {
                            System.Data.Linq.Binary imagem = model.Foto;
                            string ext = model.Extensao;
                            db.Dispose();
                            context.Response.ContentType = ext;
                            context.Response.BinaryWrite(imagem.ToArray());
                            context.Response.End();
                        }
                        db.Dispose();
                    }
                }
                catch(Exception)
                {
                    throw;
                }
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }

    A tela ficará assim:


    Todo projeto está no github no link: https://github.com/netdragoon/helpWebForms/tree/master/WebApplication1

    Fulvio C



    quarta-feira, 11 de maio de 2016 15:27
  • Bom dia Fulvio

    Obrigado por responder meu post

    Eu analisei seu código e tentei adaptar no meu código C#

    Porem o seu código usa o GridView para mostrar as fotos e uma tabela lincada.

    Mas eu apenas preciso Procurar a imagem pelo FileUpload1 e exibir no meu controle image fora do GridView e sem banco de dados.

    Sera que você ou alguém do forum pode me ajudar ?

    Fico no aguardo

    Obrigado

    quinta-feira, 12 de maio de 2016 07:40
  • Pelo que agora eu entendi, você precisa de um preview?

    Fiz um exemplo logo abaixo:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormLoadImagem.aspx.cs" Inherits="WebApplication1.WebFormLoadImagem" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="Scripts/jquery-1.10.2.js"></script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:Image ID="ImageUploadPreview" runat="server" />
        <asp:FileUpload ID="FileUploadImagem" runat="server" />
        </div>
        </form>
        <script>
            $(document).ready(function () {
                $("#<%=FileUploadImagem.ClientID%>").on('change', function()
                {
                    var pre = $("#<%=ImageUploadPreview.ClientID%>");
                    var img = $("#<%=FileUploadImagem.ClientID%>").get(0).files[0];
                    var reader = new FileReader();
    
                    reader.addEventListener("load", function () {
                        pre.removeAttr("src");
                        pre.attr("src", reader.result);                    
                    }, false);
    
                    if (img) {
                        reader.readAsDataURL(img);
                    }
                })
                
            });
        </script>
    </body>
    </html>

    Link Referencia: FileReader.readAsDataURL()


    Fulvio C

    quinta-feira, 12 de maio de 2016 13:59