Salvando imagens no banco de dados

 

Bom pessoal, hoje quero mostrar como podemos salvar uma imagem no Banco de dados de forma genérica, ou seja, que possa ser utilizado para qualquer Banco de Dados.

 

Muitos já devem ter visto métodos que realiza tal função, mas utilizando parâmetros. Mas como atualmente é muito comum à mesma aplicação pode ser utilizada com vários tipos de Banco de Dados, este método será muito útil para quem tem que manipular imagens no Banco de Dados.

 

Bom para isto, será necessário utilizarmos alguns objetos que são eles:

 

- DataSet – objeto que será responsável por conter os dados antes que enviemos para o Banco de Dados.

 

 - BindingSource – objeto responsável por realizar a ligação do objeto que está na tela com o campo que está na tabela, além de controlar as inserções, exclusões e atualizações no DataSet.

 

- IDataAdapter – objeto responsável por atualizar carregar o DataSet e atualizar as alterações realizadas no mesmo no Banco de Dados.

 

- PictureBox – Objeto que receberá a imagem que está no Banco de Dados ou a nova imagem.

 

Ao carregar o Form, utilizaremos o IDataAdapter para carregar o DataSet com o conteúdo da tabela. Sendo assim, teremos que verificar qual conexão que está ativa e realizar a inicialização do IDataAdapter. Levando em consideração se tivéssemos trabalhando com o Banco de Dados Oracle, o comando ficaria assim:

 

 IDataAdapter adapter = new OracleDataAdapter("SELECT * FROM DESENHO", (OracleConnection)conex);

 

OracleCommandBuilder cb = new OracleCommandBuilder(adapter);

 

O Comando acima, está inicializando a variável adapter para o tipo do Oracle e carregando automaticamente os comando de Insert, Update e Delete para o adapter.

 

DataSet ds = new DataSet();

adapter.Fill(ds);

BindingSource bds = new BindingSource(ds,ds.Tables[0].TableName);

 

Após, realizados o carregamento do DataSet através do comando FILL do Adapter, e instanciado o BindingSource com os dados do DataSet, será necessário realizar a ligação do campo da tabela com o objeto de tela, que no nosso caso será o PictureBox, para isto o comando abaixo é utilizado:

 

pictureBox1.DataBindings.Add("Image", bds, "imagem",true);

 

Este comando faz com que a propriedade DataBinding Image do picturebox1, seja associada há um DataSource bds, cujo o campo Imagem da tabela, seja apresentado neste compoente, true, mantendo o formato que o mesmo foi salvo ou será salvo.

        

Pronto, com isso, pode ser usado o Navigator para navegar entre os registros da tabela, sendo que todos as imagens que tiverem no campo Imagem da tabela Desenho será apresentado no form.

           

Para inserir registros, é:

           

bds.AddNew();

 

Para salvar os registros alterados, é somente utilizar o seguinte comando:

 

      bds.EndEdit();

      this.Validate();

      adapter.Update(ds);

 

Bom pessoal, espero que tenha gostado e que seja útil. Até o próximo artigo.