none
Como Salvar uma Imagem em um Banco SQL Server e Exibi-la em um PictureBox RRS feed

  • Pergunta

  • Tenho um projeto e preciso Salvar uma Imagem que está em um PictureBox e Salva-la no Banco. Depois recuperar essa Imagem do Banco.

    Se alguem puder me ajudar eu Agradeço.

    quarta-feira, 24 de março de 2010 04:25

Respostas

  • Consegui resolver assim:

    clsClienteBean clienteBean = new clsClienteBean();

     

            private void btnAbrir_Click(object sender, EventArgs e)

            {

                SqlConnection Conexao = new SqlConnection(@"Data Source=WKS011\SQLEXPRESS;Initial Catalog=Foto;Integrated Security=True");

                Conexao.Open();

     

                SqlCommand Comando = new SqlCommand("SELECT fotFoto FROM tblFoto", Conexao);

     

                SqlDataReader dr = Comando.ExecuteReader(CommandBehavior.SingleRow);

     

                if (dr.Read())

                {

                    clienteBean._foto = (Byte[])dr["fotFoto"];

                }

     

                Conexao.Close();

     

                MemoryStream memoria = new MemoryStream(clienteBean._foto);

                picFoto.Image = Image.FromStream(memoria);

     

            }

     

            private void btnSalvar_Click(object sender, EventArgs e)

            {

                clsArquivo Arquivo = new clsArquivo();

                string caminho = Arquivo.Abrir("Fotos (*.jpg)|*.jpg|Todos os arquivos (*.*)|*.*");

                if (caminho != null)

                {

                    picFoto.Image = Image.FromFile(caminho);

     

                    FileStream ArquivoStream = new FileStream(caminho, FileMode.Open, FileAccess.Read);

                    clienteBean._foto = new Byte[ArquivoStream.Length];

                    ArquivoStream.Read(clienteBean._foto, 0, clienteBean._foto.Length);

                    ArquivoStream.Close();

     

                   

                        SqlConnection Conexao = new SqlConnection(@"Data Source=WKS011\SQLEXPRESS;Initial Catalog=Foto;Integrated Security=True");

                        Conexao.Open();

     

                        SqlCommand Comando = new SqlCommand("UPDATE tblfoto SET fotFoto = @Foto WHERE fotCodigo = 1", Conexao);

                        Comando.Parameters.Add("@Foto", SqlDbType.VarBinary).Value = clienteBean._foto;

                        Comando.ExecuteNonQuery();

     

                        Conexao.Close();               

     

                }           

               

            }

     

     

    • Marcado como Resposta _Rodolfo quinta-feira, 25 de março de 2010 15:04
    quinta-feira, 25 de março de 2010 15:04

Todas as Respostas

  • segue codigo para salvar imagem no banco

     

     

    SqlParameter prm;

     

    if (openFileDialog2.FileName != null && openFileDialog2.FileName!="openFileDialog2")

    {

     

    String strBLOBFilePath = @"" + openFileDialog2.FileName;//Modify this path as needed.

     

    //Read jpg into file stream, and from there into Byte array.

     

    FileStream fsBLOBFile = new FileStream(strBLOBFilePath, FileMode.Open, FileAccess.Read);

     

    Byte[] bytBLOBData = new Byte[fsBLOBFile.Length];

    fsBLOBFile.Read(bytBLOBData, 0, bytBLOBData.Length);

    fsBLOBFile.Close();

     

    //Create parameter for insert command and add to SqlCommand object.

    prm =

    new SqlParameter("@BLOBData", SqlDbType.VarBinary, bytBLOBData.Length, ParameterDirection.Input, false,

    0, 0,

    null, DataRowVersion.Current, bytBLOBData);

    }

     

    else

    {

    prm =

    new SqlParameter("@BLOBData", SqlDbType.VarBinary, byteBLOBDataPesq.Length, ParameterDirection.Input, false,

    0, 0,

    null, DataRowVersion.Current, byteBLOBDataPesq);

    }

     

     

    e aqui parte para  jogar na picturebox novamente

     

     

    SqlConnection

     

    cn = new SqlConnection(objSC.StrConn);

    cn.Open();

     

    //Retrieve BLOB from database into DataSet.

     

    SqlCommand cmd = new SqlCommand("SELECT cnfglogorelatorios from tbconfiguracao", cn);

     

    SqlDataAdapter da = new SqlDataAdapter(cmd);

     

    DataSet ds = new DataSet();

    da.Fill(ds,

    "tbconfiguracao");

     

    int c = ds.Tables["tbconfiguracao"].Rows.Count;

     

    if (c > 0)

    {

    //BLOB is read into Byte array, then used to construct MemoryStream,

     

    //then passed to PictureBox.

     

    try

    {

    byteBLOBDataPesq = (

    Byte[])(ds.Tables["tbconfiguracao"].Rows[c - 1]["cnfglogorelatorios"]);

     

    MemoryStream stmBLOBData = new MemoryStream(byteBLOBDataPesq);

    picboxrelatorios.Image =

    Image.FromStream(stmBLOBData);

    }

     

    catch { }

    }

    cn.Close();

     

    qualquer duvida só falar.. esse codigo eu uso sempre e funciona aqui

    quarta-feira, 24 de março de 2010 05:42
  • Muito Obrigado já vou fazer o Código, só tenho mais uma Duvida. Eu trabalho com Encapsulamento de Classes e Tenho uma classe Cliente e não sei qual o tipo que eu uso na Foto.

     

     

    public class clsCliente

    {

     

    public int _codigo { get; set; }

     

    public string _nome { get; set; }

     

    public NoSeiObjeto _foto { get; set; }

    }

    quarta-feira, 24 de março de 2010 12:36
  • System.Drawing.Image ou System.Drawing.Bitmap.

    Se sua pergunta foi respondida por favor marque a resposta como certa.
    quarta-feira, 24 de março de 2010 13:02
  • vc vai jogar a funçao la na classe tbm?

    ou só passar o valor final pra ela?

     

    se for usar a funçao na classe acredito q seja string pois o openfiledialog.filename passa o caminho da pasta com o arquivo..

    se for usar a funçao no formulario e só passar o valo acredito q seja byte

    quarta-feira, 24 de março de 2010 16:26
  • Consegui resolver assim:

    clsClienteBean clienteBean = new clsClienteBean();

     

            private void btnAbrir_Click(object sender, EventArgs e)

            {

                SqlConnection Conexao = new SqlConnection(@"Data Source=WKS011\SQLEXPRESS;Initial Catalog=Foto;Integrated Security=True");

                Conexao.Open();

     

                SqlCommand Comando = new SqlCommand("SELECT fotFoto FROM tblFoto", Conexao);

     

                SqlDataReader dr = Comando.ExecuteReader(CommandBehavior.SingleRow);

     

                if (dr.Read())

                {

                    clienteBean._foto = (Byte[])dr["fotFoto"];

                }

     

                Conexao.Close();

     

                MemoryStream memoria = new MemoryStream(clienteBean._foto);

                picFoto.Image = Image.FromStream(memoria);

     

            }

     

            private void btnSalvar_Click(object sender, EventArgs e)

            {

                clsArquivo Arquivo = new clsArquivo();

                string caminho = Arquivo.Abrir("Fotos (*.jpg)|*.jpg|Todos os arquivos (*.*)|*.*");

                if (caminho != null)

                {

                    picFoto.Image = Image.FromFile(caminho);

     

                    FileStream ArquivoStream = new FileStream(caminho, FileMode.Open, FileAccess.Read);

                    clienteBean._foto = new Byte[ArquivoStream.Length];

                    ArquivoStream.Read(clienteBean._foto, 0, clienteBean._foto.Length);

                    ArquivoStream.Close();

     

                   

                        SqlConnection Conexao = new SqlConnection(@"Data Source=WKS011\SQLEXPRESS;Initial Catalog=Foto;Integrated Security=True");

                        Conexao.Open();

     

                        SqlCommand Comando = new SqlCommand("UPDATE tblfoto SET fotFoto = @Foto WHERE fotCodigo = 1", Conexao);

                        Comando.Parameters.Add("@Foto", SqlDbType.VarBinary).Value = clienteBean._foto;

                        Comando.ExecuteNonQuery();

     

                        Conexao.Close();               

     

                }           

               

            }

     

     

    • Marcado como Resposta _Rodolfo quinta-feira, 25 de março de 2010 15:04
    quinta-feira, 25 de março de 2010 15:04