![]() |
||||||||
|
||||||||
|
com exemplos em VB |
Componente para deixar forms em Vb semelhantes às telas do winnamp |
Componente para colocar sua aplicação VB no Systray |
Componente para transformar sua aplicação VB em serviço |
Ferramentas úteis para quem usa Olap Server |
![]() |
|
||||||||
![]()
Pesquisa personalizada
Gravando imagens e lidando com Streams No artigo anterior desta série vimos que podemos exibir imagens de bancos de dados Access. Mas foi mencionado que não seria possível exibir Gif's que houvessem sido inseridas no banco access através de um form access comum. Como então podemos gravar gif's em banco access e recupera-las posteriormente ? Vamos fazer um pequeno exemplo de gravação de uma Gif em ASP. Para realmente tornar esse exemplo útil ele deverá estar associado a uma aplicação que faça upload de arquivos, portanto sugiro ler nosso artigo sobre upload de arquivos com ASP. Porém o exemplo que faremos utiliza o ADO, portanto pode também ser codificado em VB. Para fazer a gravação da imagem no banco de dados devemos resolver 2 problemas : 1o, como ler a imagem, 2o como gravar esses dados binários em um campo. Vamos supor que a imagem já esteja gravada em disco. Ela poderia ser o resultado de um upload, por exemplo. Para ler essa imagem vamos utilizar um objeto chamado Stream. Esse objeto faz parte da biblioteca do ADO, surgiu a partir da versão 2.5 e facilita bastante o trabalho de ler um arquivo do disco, tal como o caso da imagem. Com relação a gravação da imagem não poderemos fazer uma instrução INSERT, como seria o recomendável para mantermos a performance da aplicação. Para gravarmos a imagem em um campo deveremos utilizar o método AppendChunk, método do objeto Field do ADO. Isso significa que teremos que ler um recordset antes de fazer a gravação. O RecordSet que iremos ler não precisará conter registro algum, já que nosso objetivo é gravar, não ler. Assim sendo, para otimizar a performance do banco podemos colocar no SELECT uma clausula WHERE absurda que fará com que nenhum registro seja retornado. Se colocarmos algo como Nome='1234' ainda assim teremos uma perda de performance, pois o banco terá que procurar entre os registros para verificar se existe alguém chamado '1234'. Porém se definirmos a clausula WHERE como 1=2 então não termos perda de performance pois o banco sabe que 1 nunca será igual a 2 e portanto nem se dará ao trabalho de procurar isso entre os registros. Vamos supor que temos um banco chamado imagem.mdb com uma tabela "teste" que possui um campo autonumber e um campo IMAGEM que é do tipo OLE Object. Veja como fica o código : <% dim x
rs.addnew A linha x.type=1 indica o tipo de informação que o stream irá ler : dados binários. Um código simples : Abre-se a conexão, cria-se um stream e usa-se este stream para ler uma gif do disco, recupera-se um recordset vazio, utiliza-se addnew para acrescentar um registro e appendchunk para fazer a gravação da imagem. Em seguida grava-se, fecha-se e destroi-se todos os objetos. Na próxima semana veremos como manipular imagens através
do Visual Basic.
Dennes Torres
|
||||||||
Veja abaixo os comentários já enviados :
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Quer
saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e Prepare-se para o Mercado! Veja o que a Búfalo tem para você. |
� Búfalo Informática,
Treinamento e Consultoria -
Rua Álvaro Alvim, 37 Sala 920 - Cinelândia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail: contato@bufaloinfo.com.br