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.
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.