Banco de Dados - MySQL

MySQL: Banco de Dados Multimidia

Você ja deve ter ouvido alguma vez a palavra Banco de Dados Multimidia, mas afinal o que é e como funciona um BD multimidia?

por Glauco Kiss Leme



Você ja deve ter ouvido alguma vez a palavra Banco de Dados Multimidia, mas afinal o que é e como funciona um BD multimidia?
Podemos considerar um BD Multimidia quando este armazena além de texto outros tipos de dados, por exemplo arquivo de imagem, video, audio e etc.

Dentre os SGBD (Sistema de Gerenciamento de Banco de Dados) mais utilizados (Microsoft SQL Server, Oracle e MySQL) todos estes oferecem suporte a este tipo de informação.

Você deve estar se perguntando agora, mas afinal onde são armazenados esse tipo de informação no Banco de Dados ?
Bom então deixe-me apresentar a vocês o BLOB (Binary Large Object - grande Objeto binário).
É um campo criado para o armazenamento de qualquer tipo de informação em formato binário dentro de uma tabela em um Banco de dados.

Vamos ver em alguns SGBD como podemos utilizar este recurso:


MySQL


No MySQL esse tipo de dado é classificado em:
TinyBlob - campo blob de armazenamento máximo igual a 255 caracteres (8 bits) mais 1 de controle;
Blob - o mesmo que o Tinyblob, porém armazenando até 16535 caracteres (16 bits) mais 2 de controle;
MediumBlob - o mesmo que o Tinyblob, porém armazenando até 16777216 caracteres (24 bits) mais 3 de controle;
LongBlob - o mesmo que o Tinyblob, porém armazenando até 4294967295 caracteres (32 bits) mais 4 de controle.


Oracle

No Oracle são utilizados os tipos Blob e cBlob que é quem são responsáveis pelo armazenamento destas informações.


Microsoft SQL Server

Ja no Microsoft SQL Server podemos utilizar o campo Image para realizar este serviço.


Bem, chega de teoria vamos ver na prática como isso funciona.
A primeira coisa é verificar qual a versão de seu MDAC no caso iremos precisar da versão igual ou superiror a 2.5, para isso basta entrar no menu Project e depois clicar na opção References. Veja abaixo:



Se você não tiver você pode baixar no site da microsoft

A ideia é criar uma aplicação em Visual Basic que grave em uma tabela o codigo, o nome, o setor e a foto da pessoa, ok.
O funcionamento do programa é simples, primeiramente você informa um código, um nome, e um setor nos campos correspondentes e em um outro campo, no nosso exemplo o text4, eu informo o local onde esta localizado a foto da pessoa, por exemplo se ela estiver no diretório raiz preechemos c:\foto.jpg

O SGDB utilizado será o MySQL, estarei considerando que você ja sabe montar a string de conexão de acesso ao Banco, também não estou preocupado com a funcionabilidade deste programa, ok


Sendo assim crie uma tabela chamada funcionarios com os seguintes campos:

Codigo varchar (06)
Nome varchar (50)
Setor varchar (20)
Foto longBlob


Agora crie um form com 4 TextBox, 4 Labels e 2 botões. No final ele ficará mais ou menos desta forma, ok



Agora crie um objeto na sessão General chamado MyStream.Stream veja o exemplo:



Você percebeu que temos um novo metodo para trabalhar o Stream, na verdade vai ser ele quem vai fazer o serviço pesado, mas vamos adiante.
No evento clique do seu botão salvar insira o seguinte código:



Vamos as explicações:

Antes de começarmos gostaria de comentar apenas que Mycon é o meu objeto de conexão com o banco e MyRS é o meu objeto RecordSet, no seu programa você utilizará o nome que você criou.
Dito isto vamos lá:


MyStream.type = adTypeBinary - nesta linha estou dizendo ao meu objeto MyStream que ele irá converter para valores do tipo binario.

MyStream.Open - estou abrindo o MyStream

MyStream.LoadFromFile (Text4.Text) - estou indicando para o MyStream que ele leia o arquivo indicado no campo text4

MyRS.Open "SELECT codigo, nome, setor, midia FROM Funcionarios", MyCon, , adLockOptimistic - Apenas estou abrindo o meu RecordSet, ideal é que quando o volume de registros aumentar você coloque depois do nome da tabela a clausula WHERE 1=2 pois assim economizará recurso computacional.

Agora preciso que você preste atenção nesta linha do codigo:

MyRS.Fields(3) = MyStream.Read - repare que neste campo estou recebendo o conteudo lido pelo MyStream, como definimos o tipo dele igual a binário (Mystream.type = adTextBinary) então iremos armazenar valores binário na tabela, incrivel não !!!

MyStream.close - estou fechando o objeto MyStream


Agora vamos executar o nosso programa:



Se tudo ocorrer bem irá aparecer uma mensagem de confirmação, após isso verifique na sua tabela o que está armazenado no campo foto. Se você constatar que funcionou pode apagar o arquivo de seu disco pois ele está armazenado agora no Banco de Dados.

Para uma eventual consulta você pode estar colocando um componente PictureBox e um ADODC assim você associa a propriedade RecordSource do ADODC com o Picture.

É claro que em um projeto o mais correto é colocar um CommonDialog para procurar o arquivo e melhorar sua funcionabilidade e aparencia, mas como disse acima a ideia é apenas mostrar como utilizar o recurso, ok

E é isso, espero que tenham gostado do artigo e me desculpem de alguma falha pois este é o meu primeiro artigo pra web.

Até uma próxima oportunidade.
Glauco Kiss Leme

Glauco Kiss Leme