Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Paulo2031

Como visualizar uma imagem salva no DB em uma Picturebox do visual Studio

Recommended Posts

Preciso de ajuda para visualizar uma imagem que foi cadastrada no meu DB do sql  em uma Picturebox do Visual studio Professional 2013 e também arrumar uns errinhos de código meu para que funcione normalmente.
Ps: Sou leigo no assunto, terminei meu curso técnico a 2 meses e queria aprender mais, e para aproveitar minha necessidade de limpar meu hd que está cheio de filmes queria fazer um programa para guardar os dados e imagens de filmes que assisti, para na hora de baixar novos filmes não baixar repetido.
Minha query do SQL server(começa aqui):
create table FILMES
(
CODIGO INT primary key identity,
NOME VARCHAR (60) NOT NULL,
ANO  char (4) NOT NULL,
Assistido char(4) not null,         -- checkbox que marca se ja assisti ou não o filme , se já não posso mais baixar, se sim posso baixar para assistir.
GENERO varchar (30) not null,
DESCRICAO VARCHAR (400),    
NImagem varchar(200),  -- nome da imagem (------.jpg\-----.png)
CImagem varchar(200),  -- caminho da imagem (pasta)
Imagem varbinary(max), -- imagem salva que sera usada no picture box.
)
Minha query do SQL server(termina aqui).
 
 
Formulário de cadastro (Começa aqui):
 
private void btCadastrar_Click(object sender, EventArgs e)
        {
            if (txtNome.Text != "" && txtAno.Text != "" && txtGenero.Text != "")
            {
                ClassCadastro obj = new ClassCadastro();
 
                obj.NOME = txtNome.Text;
                obj.ANO = txtAno.Text;
                obj.GENERO = txtGenero.Text;
                obj.DESCRICAO = rtbDescricao.Text;
 
                if (cbAssistido.Checked)
                {
                    obj.ASSISTIDO = "Sim";
                    //Método para Cadastrar os dados os dados por filme (Começa aqui):
                    bool aux = obj.CadastrarFilme();
                    if (aux != false)
                    {
                        MessageBox.Show(obj.NOME + " cadastrado com sucesso.");
                        btLimpar_Click(this, new EventArgs());
                        txtNome.BackColor = Color.White;
                        txtAno.BackColor = Color.White;
                        txtGenero.BackColor = Color.White;
                        //Método para Cadastrar os dados do filme ("Termina" aqui).
 
                        //método para salvar Foto no banco sql (Começa aqui): (queria usar orientação a objeto más não consegui, se alguém puder ajudar nisso também,eu agradeço).
                        MemoryStream ms = new MemoryStream();
                        salvaFoto.Save(ms, ImageFormat.Bmp);
                        byte[] foto = ms.ToArray();
 
                        codigoDoFilme = obj.CODIGOFILME;
 
                        const string strconexao = @"Password=senac@pir01;Persist Security Info=True;User ID=sa;Initial Catalog=Filmes;Data Source=.\SQLEXPRESS";
                        SqlConnection conexao = new SqlConnection(strconexao);
                        //Não sei qual dos dois comandos abaixo devo usar, usei o insert e tinha dado erro, usei o update e funcionou , se alguem souber porque está dando errado com insert ou qual dos dois devo usar agradeço.
                        //SqlCommand comando = new SqlCommand("insert into Filmes(IMAGEM) values (@Imagem) where CODIGO = '"+codigoDoFilme+"' ", conexao);
                        SqlCommand comando = new SqlCommand("UPDATE Filmes set IMAGEM = (@Imagem) where CODIGO = '" + codigoDoFilme + "' ", conexao);
 
                        SqlParameter paramfoto = new SqlParameter("@Imagem", SqlDbType.Binary);
                        paramfoto.Value = foto;
                        comando.Parameters.Add(paramfoto);
                        try
                        {
                            conexao.Open();
                            comando.ExecuteNonQuery();
                        }
                        catch (SqlException ex)
                        {
                            MessageBox.Show(ex.Message + "erro no botão salvar imagem");
                        }
                        finally
                        {
                            MessageBox.Show("imagem guardada com sucesso");
                            conexao.Close();
                        }
                        //Metodo para salvar foto no banco (termina aqui).
                    }
 
                    else
                        MessageBox.Show(obj.NOME + " não foi cadastrado.");
 
 
                }
                    //Se o checkbox não foi marcado vem aqui (ainda não terminei tenho que colocar a parte de cadastro da imagem aqui, se tiver um jeito mais fácil me ajudem.)
                else
                {
                    obj.ASSISTIDO = "Não";
                    bool aux = obj.CadastrarFilme();
                    if (aux != false)
                    {
                        //Voltar a cor do texto para branco depois de cadastrado.
                        MessageBox.Show(obj.NOME + " cadastrado com sucesso.");
                        btLimpar_Click(this, new EventArgs());
                        txtNome.BackColor = Color.White;
                        txtAno.BackColor = Color.White;
                        txtGenero.BackColor = Color.White;
 
                    }
 
                    else
                        MessageBox.Show(obj.NOME + " não foi cadastrado.");
                }
 
            }
            else
            {
                //MENSAGEM FALANDO DOS CAMPOS OBRIGATÓRIOS
                MessageBox.Show("Verificar campos obrigatórios.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
 
 
                //PINTAR O TEXT DE OUTRA COR DO CAMPO OBRIGATÓRIO
                txtNome.BackColor = Color.Yellow;
                txtAno.BackColor = Color.Yellow;
                txtGenero.BackColor = Color.Yellow;
            }
            //Cadastro acaba aqui (Funcionando)!
 
// Método usado para cadastrar os dados (somente os dados , a foto foi cadastrada no momento em que apertou o botão cadastrar no formulário):
public bool CadastrarFilme()
        {
            //string query = "insert into Clientes values (GETDATE(),'" + nome + "','" + rg + "'," + 0 + ",'" + cpf + "',CONVERT(date, '" + dataNascimento + "', 103),'" + email + "','" + telefoneResidencial + "','" + telefoneCelular + "','" + cidade + "','" + cep + "','" + rua + "'," + numResidencia + ",'" + bairro + "','" + estado + "','" + observacao + "'," + 1 + ",'" + razaoSocial + "','" + nomeFantasia + "','" + cnpj + "','" + inscricaoEstadual + "',)";
            string query = "insert into FILMES(NOME,ANO,ASSISTIDO,GENERO,DESCRICAO) values ('"+nome+"','"+ano+"','"+assistido+"','"+genero+"','"+descricao+"') select SCOPE_IDENTITY()[ultimo Cadastro] ";
           
            ConexaoDB obj = new ConexaoDB();
            codigoFilme = obj.ExecutaQuery(query);
 
            if (codigoFilme != 0)
                return true;
            else
            {
                erro = obj.ComandoErro;
                return false;
            }
        }
// Método usado para cadastrar os dados(termina aqui, funcionando!):
 
//Já no formulário onde vou trazer a imagem do banco para mostrar na picturebox(Começa aqui):
 private void button1_Click(object sender, EventArgs e)
        {
            ClassCadastro obj = new ClassCadastro();
            obj.CODIGOFILME = Convert.ToInt32(txtBuscaCod.Text);
            
            bool aux = obj.ProcurarFilmePorCodigo();
            if (aux != false)
            {
                
                lbCaminho.Text = obj.CImagem;
                lbNome.Text = obj.NImagem;
                //Não sei em que formato eu converto , tentei utilizar a orientação a objeto  e gostaria de fazer o mesmo no cadastro.
                pbFoto.Image = Convert.ToByte(obj.ImagemByte.ToString);
            }
            else
                MessageBox.Show(obj.NOME + " não foi encontrado.");
 
        }

//visualização da imagem( termina aqui, não exibe a imagem na picturebox).

 

//Método utilizado para pesquisar a imagem do banco de dados(Começa aqui):

  public bool ProcurarFilmePorCodigo()

        {
            string query = "select CODIGO, NOME, ANO, GENERO, NImagem, Imagem, CImagem from FILMES where CODIGO = '"+codigoFilme+"'";
            ConexaoDB obj = new ConexaoDB();
            DataTable dt = obj.RetornaTabela(query);
            if (dt.Rows.Count > 0)
            {
                codigoFilme = Convert.ToInt32(dt.Rows[0]["CODIGO"]);
                nome = Convert.ToString(dt.Rows[0]["NOME"]);
                ano = Convert.ToString(dt.Rows[0]["ANO"]);
                genero = Convert.ToString(dt.Rows[0]["GENERO"]);
                nomeimagem = Convert.ToString(dt.Rows[0]["NImagem"]);
                caminhoimagem = Convert.ToString(dt.Rows[0]["CImagem"]);
                imagemByte = Convert.ToByte(dt.Rows[0]["Imagem"]);
                return true;
            }
            else
                return false;
        }
//Método para pesquisar a imagem do banco de dados(termina aqui).
 
//Classe utilizada para a orientação de objetos(Começa aqui):(não sei se está certo)
 class ClassCadastro
    {
            private int codigoFilme;
            private string assistido;
            private string nome;
            private string ano;
            private string genero;
            private string descricao;
 
            private Image imagem;
            private string nomeimagem;
            private string caminhoimagem;
            private Byte imagemByte;
            public string erro;
           
        public ClassCadastro()
        {
            codigoFilme = 0;
            assistido = null;
            nome = null;
            ano = null;
            genero = null;
            descricao = null;
            imagem = null;
            nomeimagem = null;
            caminhoimagem = null;
            imagemByte = 0;
        }
        public string NOME   
        {
            get { return nome ; }
            set { nome = value; }
        }
        public  string ANO  
        {
            get { return ano ; }
            set { ano = value; }
        }
        public string ASSISTIDO 
        {
            get { return assistido; }
            set { assistido = value; }
        }
        public string GENERO
        {
            get { return genero; }
            set { genero = value; }
        }
        public  string DESCRICAO
        {
            get { return descricao ; }
            set { descricao = value; }
        }
        public  Image  IMAGEM
        {
            get { return imagem ; }
            set { imagem = value; }
        }
        public string NImagem
        {
            get { return nomeimagem; }
            set { nomeimagem = value; }
        }
        public string CImagem
        {
            get { return caminhoimagem; }
            set { caminhoimagem = value; }
        }
 
        public int CODIGOFILME
        {
            get { return codigoFilme; }
            set { codigoFilme = value; }
        }
        public Byte ImagemByte
        {
            get { return imagemByte; }
            set { imagemByte = value; }
        }
//Classe utilizada para a orientação de objetos(Termina aqui).

post-771448-0-75074700-1435087299_thumb.

post-771448-0-84165300-1435087303_thumb.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal por favor me ajudem!

preciso muito aprender a mostrar a imagem que está no banco em uma picturebox, se alguém souber de uma vídeo aula ou blog que mostre como, ou se você puder me ajudar eu agradeço muito!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×