none
Armazenar o local da imagem no banco. RRS feed

Respostas

  • Ajuda por favor ;)

    obg


    Usa parametro.

     MySqlCommand command = new MySqlCommand("insert into produto(imagem) values (@armazenaimagem)", mConn);
    
    command.Parameters.Add("@armazenaimagem", SqlDbType.Image).Value=armazenaimagem;
    

    Just Be Humble Malange!
    quinta-feira, 22 de julho de 2010 11:49
    Moderador

Todas as Respostas

  • Alguem tem algum exemplo de armazenar o local da imagem no banco, e depois adquirir ela de volta ??

     


    AQui tem um exemplo simples e pratico: http://www.shabdar.org/store-save-images-in-sql-server.html
    Just Be Humble Malange!
    segunda-feira, 19 de julho de 2010 18:38
    Moderador
  • Henrique, você pode ter uma tabela de produtos por exemplo com a seguinte estrutura:

     

    Produto

    ID INT,

    NOME VARCHAR(200),

    CAMINHO_IMAGEM VARCHAR(500),

    DATA_CADASTRO DATETIME

     

    Quando gravar um produto nessa tabela ficaria +/- assim:

     

    ID NOME CAMINHO_IMAGEM DATA_CADASTRO

    1 Caneta ~/imagens/produto/Produto1.jpeg 2010-07-20 10:59:00.484

     

    E na sua aplicação você teria um objeto Produto:

     

    public class Produto {
    
      public int ID { get; set }
      public string Nome { get; set }
      public string CaminhoImagem { get; set }
      public DateTime DataCadastro { get; set }
    }
    

     

    Quando você recuperar esse produto no banco, você seta o valor do campo para a propriedade CaminhoImagem, e na sua página aspx, você terá um controle que irá exibir a imagem de acordo com o caminho passado, tudo bem?


    Cássio V1RU5
    terça-feira, 20 de julho de 2010 14:05
  • Bem tentei armazenar dessa forma abaixo , achei q estava certo no entanto qdo armazenei vi no mysql q foi retirada as barras do local... alguem sabe informar pq ?

    Pq sem as barras nao tem como eu recuperar o local da imagem da error ...

     

     private void carregaImagem()

            {

                OpenFileDialog openFileDialog1 = new OpenFileDialog();

                openFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";

                openFileDialog1.Title = "Abrir Imagem";

                if (openFileDialog1.ShowDialog() == DialogResult.OK)

                {

                    pictureBox1.ImageLocation = openFileDialog1.FileName;

                    armazenaimagem = openFileDialog1.FileName;

                }

                else

                {

                    pictureBox1.ImageLocation = localimagem;

                }

            }

    Nesse carregaImagem() eu abro um open dialog escolho a imagem e jogo no picturebox... se eu mostrar a VARIAVEL ARMAZENAIMAGEM e jogar na tela aparece com as barras no entanto qdo salvo as barras sao retiradass....

     

    OBG!

    quarta-feira, 21 de julho de 2010 02:58
  • Henrique,

    Mostre pra gente como você está fazendo o armazenamento do caminho no banco...


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    quarta-feira, 21 de julho de 2010 11:44
    Moderador
  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using MySql.Data.MySqlClient;
    using System.IO;

    namespace PeShow
    {
        public partial class FProdutoNovo : Form
        {
            private MySqlConnection mConn = null;
            private DataSet bdDataSet = null;
            private MySqlCommand commS = null;
            private MySqlDataReader rs = null;
            public String localimagem = "C:\\Users\\user\\Documents\\huahuauha.jpg";
            public String armazenaimagem = null;

            public FProdutoNovo()
            {
                InitializeComponent();
            }

            private void alterarToolStripMenuItem_Click(object sender, EventArgs e)
            {
                 carregaImagem(); 

             }

            private void FProdutoNovo_Load(object sender, EventArgs e)
            {
                abreconexao();
            }

    ######################################################
    CARREGANDO A IMAGEM NO PICTUREBOX
    ######################################################

            private void carregaImagem()
            {
                OpenFileDialog openFileDialog1 = new OpenFileDialog();
                openFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
                openFileDialog1.Title = "Abrir Imagem";
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.ImageLocation = openFileDialog1.FileName;
                    armazenaimagem = openFileDialog1.FileName;
                }
                else
                {
                    pictureBox1.ImageLocation = localimagem;
                }
            }

    ####################################
    ABRINDO A CONEXAO
    ####################################

            public void abreconexao()
            {
                bdDataSet = new DataSet();
                mConn = new MySqlConnection(" Persist Security Info=False;server=localhost;database=peeshow;uid=root;server=localhost;database=peeshow;uid=root;pwd=root");

                try
                {
                    mConn.Open();


                }
                catch
                {
                    MessageBox.Show("Error na Conexão ao banco.");
                }
            }

    ########################################################################
    AQUI ESTOU TENTANDO ARMAZENAR A IMAGEM O LOCAL, QUE ESTA NA VARIAVEL ARMAZENAIMAGEM
    ################## ###################################################### 

         private void button1_Click(object sender, EventArgs e)
            {
                if (mConn.State == ConnectionState.Open)
                {
                    
                   
                    
                    MySqlCommand command = new MySqlCommand("insert into produto(imagem) values('" + armazenaimagem + "')", mConn);
                    if (MessageBox.Show("Confirma inclusão? ", "Incluir", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        command.BeginExecuteNonQuery();
                        MessageBox.Show(armazenaimagem);
                        

                    }
                    else
                    {
                        Close();
                    }
                }
            }

        
    ###########
    NESSE BOTAO EU TENTO CAPTURAR O LOCAL DA IMAGEM....
    ###########

       private void button2_Click(object sender, EventArgs e)
            {
                MySqlCommand cm1 = new MySqlCommand("select imagem from produto where idproduto = 1", mConn);
                
                rs = cm1.ExecuteReader();
                if (rs.Read())
                {
                    String a = rs["imagem"].ToString();
                    textBox1.Text = a;
                    pictureBox2.ImageLocation = a;
                }    
            }


            


        }
    }

    quarta-feira, 21 de julho de 2010 13:49
  • Ajuda por favor ;)

    obg

    quarta-feira, 21 de julho de 2010 23:21
  • Ajuda por favor ;)

    obg


    Usa parametro.

     MySqlCommand command = new MySqlCommand("insert into produto(imagem) values (@armazenaimagem)", mConn);
    
    command.Parameters.Add("@armazenaimagem", SqlDbType.Image).Value=armazenaimagem;
    

    Just Be Humble Malange!
    quinta-feira, 22 de julho de 2010 11:49
    Moderador
  • Deu certo Malange, para inserir ! OBG

    Para capturar de volta está assim

        private void button2_Click(object sender, EventArgs e)

            {

                MySqlCommand cm1 = new MySqlCommand("select imagem from produto where idproduto = 8", mConn);

     

                rs = cm1.ExecuteReader();

                if (rs.Read())

                {

                    String a = rs["imagem"].ToString();

     

                    textBox1.Text = a;

                    MessageBox.Show(a);

                    pictureBox2.ImageLocation = a;

                }    

            }

     

    Eu posso utilizar o parameters tbm para capturar ?

    quinta-feira, 22 de julho de 2010 16:07
  • Henrique,

    Se for fazer com SELECT, o máximo de parâmetros que dá pra você utilizar, seria passar como parâmetro o seu idproduto... Agora, para pegar a imagem de volta, seria do jeito que você está fazendo mesmo...

    O que você poderia fazer (que eu particularmente não faria) seria criar uma procedure que retorna o caminho a partir da idproduto, aí você poderia pegar o caminho com parâmetros de output... Mas, aí não faz sentido, você estaria complicando o que não precisa ser complicado... :)


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    quinta-feira, 22 de julho de 2010 16:52
    Moderador
  • Do jeito que estou fazendo Andre, so retorna uma \ para colocar como ImageLocation da PictureBox tem q ser \\ 2 barras, nao sei pq entao por isso q nao esta dando certo do meu jeito...
    quinta-feira, 22 de julho de 2010 16:58
  • Nossa, agora me perdi... Como assim tem que ser duas barras?

    Se você salvou com duas barras tem que ficar com duas barras... Como ficou o seu método para salvar no banco?


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    quinta-feira, 22 de julho de 2010 17:04
    Moderador
  • Meu metodo ficou assim de inserir o caminho no BANCO...

    private void button1_Click(object sender, EventArgs e)

            {

                if (mConn.State == ConnectionState.Open)

                {

                   MySqlCommand command = new MySqlCommand("insert into produto(imagem) values (@armazenaimagem)", mConn);

                    command.Parameters.Add("@armazenaimagem", MySqlDbType.String).Value = armazenaimagem;

                    if (MessageBox.Show("Confirma inclusão? ", "Incluir", MessageBoxButtons.YesNo) == DialogResult.Yes)

                    {

                        command.BeginExecuteNonQuery();

                        MessageBox.Show(armazenaimagem);

                     }

                    else

                    {

                        Close();

                    }

                }

            }

     

     

    Como o Malange me ajudou acima, desse jeito que ele me flw armazena no banco a \ do outro mdo q eu estava armazenando a \ nao era armazenada no banco..... ESSE METODO JA ESTA FUNCIONANDO....

     

     

    No entanto quando vo capturar o LOCAL ele vem com uma \ ate ai tudo bem q so tem uma barra, como poderia voltar com duas hehe...

    no entanto o ImageLocation do PictureBox onde vc coloca a direcao da imagem, pede que voce colocque duas \\ nao sei pq mais ele so captura a imagem se tiver com \\

    EXEMPLO:  C:\\Users\\user\\Desktop\img.jpg

    No banco retorna assim C:\Users\user\Desktop\img.jpg

     

    tendeu agora ?

    OBG! 

    quinta-feira, 22 de julho de 2010 17:13
  • Podes fazer um favor fecha este thread marca como respondida e abre um novo thread ai vamos responder a sua pergunta, assim ajuda os outros usuarios tambem.

    Por que a sua pergunata original foi respondida.

    Obrigado.


    Just Be Humble Malange!
    quinta-feira, 22 de julho de 2010 22:48
    Moderador