|
Inicio → WINDEV 25 → WX - Imagem no Banco de dados MS SQL SERVER e uso em aplicativos da PCSOFT |
WX - Imagem no Banco de dados MS SQL SERVER e uso em aplicativos da PCSOFT |
Iniciado por BOLLER, out., 14 2016 6:23 PM - Sem resposta |
| |
| | | |
|
| |
Membro registado 3.659 mensagems Popularité : +175 (223 votes) |
|
Publicado em outubro, 14 2016 - 6:23 PM |
Bom dia pessoal,
Primeiramente, gostaria de agradecer a todos que me ajudaram, não vou citar nomes para não cometer a gafe de esquecer de alguém porque pedi pra muita gente rsrsr.
Estava fazendo um projeto que se conectava com uma base de dados MSSQL através de uma conexão ODBC, fiz uma query onde a mesma povoava o meu LOOPER e meu FORM perfeitamente, até o momento que eu precisei inserir uma IMAGEM trazida do meu Banco de dados.
O Tipo do campo é IMAGE
Então toda vez que eu fazia a leitura do campo imagem o resultado que me retornava era algo como: 0xFFD8FFE000104A4649460001010000010......... Até que em conversa com o MESTRE ADRIANO BOLLER, ele disse que isso realmente nunca iria funcionar, então ele me pediu para fazer um Teste:
- Criar uma aplicação no Windev para ler esse campo imagem, - Criptografar a imagem com a função Crypt - Salvar em outra coluna da mesma tabela com mesma imagem só que agora criptografada.
Voltando ao Windev Mobile, fazer a mesma leitura no banco de dados, só que agora ao invés de pegar do campo imagem original, pegar do campo que contém a imagem criptografada. E realmente funcionou, a imagem apareceu tanto no meu LOOPER quanto no meu FORM. Porém eu ainda tinha um problema, não podia mexer na estrutura da tabela do cliente, tendo em vista eu estar fazendo um APP que apenas faça uma leitura nos dados do cliente. Foi aí que me veio a ideia de criar uma query transformando meu campo imagem já em uma imagem criptografada que o Windev Mobile pudesse interpretar.
Então criei a seguinte view:
CREATE VIEW TESTE_IMAGEM AS SELECT imagem_normal, CAST(N'' AS XML).value( 'xs:base64Binary(xs:hexBinary(sql:column("imagem_criptografada")))' , 'VARCHAR(Max)' ) imagem_Base64Encoding FROM ( SELECT imagem as imagem_normal, CAST(imagem AS VARBINARY(Max)) AS imagem_criptografada from GIMAGEM ) AS Image;
Que me gerou o seguinte resultado:
No Windev Mobile
sSQLpatrimonio is string = "select * from TESTE_IMAGEM” bExecutasqlpatrimonio is boolean = SQLExec(sSQLpatrimonio,"SqlLista_patrimonio") . . Faço a verificação se a consulta foi executada, se sim . . // Alimentando Variável string com o Resultado do select WHILE SQLFetch("SqlLista_patrimonio") = 0 Foto is string = SQLGetCol("SqlLista_patrimonio", 2)
// Descriptografando o Conteúdo da variável Foto e passando para o looper LooperAddLine(LOOP_patrimonios, Uncrypt(Foto,"",cryptNone)) END
Então o Resultado foi esse:
Aí Pra passar pro FORM fica fácil.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
|