none
Como mostrar um campo image do banco de dados SQL Server ? RRS feed

  • Pergunta

  • Bom dia Galera

    Como Mostrar ou Exibir o campo image do meu banco de dados sql Server no meu controle 

    <asp:Image ID="imgDemo" runat="server" Height="80px" Width="80px" />

    Lembrando que essa imagem foi salva usando linq dessa forma:

    CADASTROTIMES CADASTROTIMES = new CADASTROTIMES();
    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();

    //LOGO
    byte[] fileByte = FileUpload1.FileBytes; //converte a imagem em bytearray
    System.Data.Linq.Binary binaryObj = new System.Data.Linq.Binary(fileByte);//cria um objeto do tipo binary baseado no bytearray
    CADASTROTIMES.LOGO  = binaryObj;

    mdc.CADASTROTIMES.InsertOnSubmit(CADASTROTIMES);
    mdc.SubmitChanges();

    E para mostrar os meus dados eu tambem estou usando linq conforme abaixo:

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

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

                CADASTROTIMES TIMES = mdc.CADASTROTIMES.First(time => time.USUARIO == CookieUsuario.Value);

                TbRBS.Text = TIMES.CODIGO.ToString().Trim().ToUpper();
                TbTime.Text = TIMES.TIME.ToString().ToUpper().Trim();
                TbCampo.Text = TIMES.CAMPO.ToString().ToUpper().Trim();
                TbDiretor.Text = TIMES.DIRETOR.ToString().ToUpper().Trim();
                TbTelefone.Text = TIMES.TELEFONE.ToString().ToUpper().Trim();
                TbTime.Text = TIMES.TIME.ToString().ToUpper().Trim();
                DropDownRegiao.Text = TIMES.REGIAO.ToString().ToUpper().Trim();
                TbUsuario.Text = TIMES.USUARIO.ToString().ToUpper().Trim();
                
                TbDataCadastro.Text = Convert.ToDateTime(TIMES.DATA.ToString()).ToString("dd/MM/yyyy");

                btnCadastrar.Text = "Atualizar";
            }

    Alguem pode me ajudar por favor ?

    Fico no aguardo.

    Muito Obrigado

    sexta-feira, 13 de maio de 2016 10:03

Respostas

  • Então, o controle ASP:IMAGE funciona da mesma forma que um PictureBox (WinForms).

    O dado foi salvo no banco como um array de bytes. Você vai recuperar esse array de bytes e carregar em uma imagem (casse System.Drawing.Bitmap por exemplo). No banco, os dados binários são salvos como "0x000HHH...." e o select retornará assim, como uma "string". Basta converter de Hexadecimal para Array de Bytes, criar uma instância da classe Bitmap e carregar desse array. Então vincule o Bitmap ao controle ASP.

    Esse é caminho das pedras ...

    • Marcado como Resposta Marcos SJ sexta-feira, 13 de maio de 2016 11:52
    • Não Marcado como Resposta Ricardo-ti2016 quinta-feira, 19 de maio de 2016 01:25
    • Marcado como Resposta Thales F Quintas quinta-feira, 19 de maio de 2016 14:12
    • Não Marcado como Resposta Ricardo-ti2016 sexta-feira, 20 de maio de 2016 01:28
    • Sugerido como Resposta Samuel Pelaquim quinta-feira, 2 de junho de 2016 13:06
    • Marcado como Resposta Thales F Quintas quinta-feira, 2 de junho de 2016 13:23
    sexta-feira, 13 de maio de 2016 11:44
  • Opa, tudo bom Ricardo-ti2016?

    A resposta do SammuelMiranda está correta. O campo image não salva uma imagem literalmente. Ele salva uma string hexadecimal, uma linha texto, que foi gerada a partir de um Array de bytes, ou seja, um conjunto de grupos de 8-bits na forma de um vetor. Quando você busca estes dados do banco de dados, ele retorna essa mesma string, uma linha de texto, toda confusa, porque está em hexadecimal, como no exemplo que o Sammuel já explicou.

    Quando você buscar essa informação do banco, você vai salvar em um objeto do tipo imagem, por exemplo, como um System.Drawing.Bitmap, convertendo essa string de hexadecimal para um array de bytes de novo, e passando esse novo objeto como parâmetro para a imagem.

    Se ainda tiver dúvidas, dá uma olhada nos links abaixo por favor:

    COMO: Copiar uma imagem de um banco de dados diretamente em um controle PictureBox Visual C#

    Loading PictureBox Image From Database

    C# Save and Load Image from Database

    Só correr um pouco atrás do conhecimento que todas as dicas já foram dadas.

    Boa sorte e bom estudo!


    quinta-feira, 2 de junho de 2016 13:20

Todas as Respostas

  • Então, o controle ASP:IMAGE funciona da mesma forma que um PictureBox (WinForms).

    O dado foi salvo no banco como um array de bytes. Você vai recuperar esse array de bytes e carregar em uma imagem (casse System.Drawing.Bitmap por exemplo). No banco, os dados binários são salvos como "0x000HHH...." e o select retornará assim, como uma "string". Basta converter de Hexadecimal para Array de Bytes, criar uma instância da classe Bitmap e carregar desse array. Então vincule o Bitmap ao controle ASP.

    Esse é caminho das pedras ...

    • Marcado como Resposta Marcos SJ sexta-feira, 13 de maio de 2016 11:52
    • Não Marcado como Resposta Ricardo-ti2016 quinta-feira, 19 de maio de 2016 01:25
    • Marcado como Resposta Thales F Quintas quinta-feira, 19 de maio de 2016 14:12
    • Não Marcado como Resposta Ricardo-ti2016 sexta-feira, 20 de maio de 2016 01:28
    • Sugerido como Resposta Samuel Pelaquim quinta-feira, 2 de junho de 2016 13:06
    • Marcado como Resposta Thales F Quintas quinta-feira, 2 de junho de 2016 13:23
    sexta-feira, 13 de maio de 2016 11:44
  • Desculpe mas não entendi como fazer esse processo.

    Alguém pode me ajudar ?

    Fico no aguardo.

    Obrigado

    quinta-feira, 19 de maio de 2016 01:26
  • Não entendi como fazer esse processo.

    O que achei na internet com minhas pesquisas foi algo assim:

    MemoryStream ms = new MemoryStream(byte[TIMES.LOGO]);
                Image returnImage = Image.FromStream(ms);
                imgDemo = returnImage;

    Mas esta dando erro:

    Error 17  Invalid expression term 'byte'

    C:\ARTSIM\BreedSoccer\BreedSoccer\BreedSoccer\Account\CadastrarTime.aspx.cs 59 52  BreedSoccer

    sexta-feira, 20 de maio de 2016 01:30
  • Opa, tudo bom Ricardo-ti2016?

    A resposta do SammuelMiranda está correta. O campo image não salva uma imagem literalmente. Ele salva uma string hexadecimal, uma linha texto, que foi gerada a partir de um Array de bytes, ou seja, um conjunto de grupos de 8-bits na forma de um vetor. Quando você busca estes dados do banco de dados, ele retorna essa mesma string, uma linha de texto, toda confusa, porque está em hexadecimal, como no exemplo que o Sammuel já explicou.

    Quando você buscar essa informação do banco, você vai salvar em um objeto do tipo imagem, por exemplo, como um System.Drawing.Bitmap, convertendo essa string de hexadecimal para um array de bytes de novo, e passando esse novo objeto como parâmetro para a imagem.

    Se ainda tiver dúvidas, dá uma olhada nos links abaixo por favor:

    COMO: Copiar uma imagem de um banco de dados diretamente em um controle PictureBox Visual C#

    Loading PictureBox Image From Database

    C# Save and Load Image from Database

    Só correr um pouco atrás do conhecimento que todas as dicas já foram dadas.

    Boa sorte e bom estudo!


    quinta-feira, 2 de junho de 2016 13:20