Ir ao conteúdo
  • Cadastre-se

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


Paulo2031

Posts recomendados

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.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...