¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Recuperação de imagens em consultas SQL para armazenamento em beans: guia passo a passo

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Cargando...

Tenho uma tabela com 2 campos do tipo imagem.

Este tipo de dado imagem é utilizado para armazenar

emailid | attachmentname | anexo | mensagem

anexo e mensagem são ambos do tipo imagem

Na minha consulta... preciso especificar uma forma de recuperá-los... ou apenas como uma declaração select normal?

select emailid, attachmentname, attachment, mensagem from MailTable

Todas as informações devem ser retornadas para um bean

String emailid=""; getter/setter

String attachmentname=""; getter/setter

byte[] attachment=null; getter/setter

byte[] mensagem=null; getter/setter

bean.setemailid(emailid);

bean.setattachmentname(attachment);

Como vou definir o anexo e a mensagem com byte[];

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá,

Se a fonte de bytes for uma string, simplesmente bytes.toString deve resolver.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

O tipo de dado de imagem realmente não significa que contenha uma imagem, certo?

Se eu tiver uma mensagem longa... ainda posso armazená-la como imagem, correto?

Quero que esta mensagem seja exibida no webdynpro.........


ResultSet rs = stmt.executeQuery(squery);
	try {
					
	while (rs.next()) {
         OutMailBean outMailBean = new OutMailBean();	
         outMailBean.setEmailId(rs.getString("EMAILID"));
        outMailBean.setMessage(rs.getBytes("MESSAGE"));
      }

rs.getBytes("MESSAGE"); irá retornar um caractere ilegível que mais tarde quero vincular à caixa de texto

[ .......................... .....mensagem aqui........................... ]

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Visite meu blog

/people/anilkumar.vippagunta2/blog/2007/02/20/reading-and-writing-images-from-sqlserver-in-webdynpro

Saudações, Anilkumar

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá yzme,

De acordo com Usando tipos de dados avançados, o tipo SQL Server imagem é mapeado para o tipo JDBC LONGVARBINARY, que por sua vez é mapeado para vários possíveis tipos em Java: byte[] (padrão), Blob, CharacterStream, BinaryStream, String. O link também contém alguns trechos de código. Note que o tamanho máximo do tipo de dado imagem é (2^31 - 1) bytes, o que equivale a 2 GB.

Suponho que você deseja "exibir" o anexo usando um elemento UI de Web Dynpro FileDownload. No NW04, a única maneira é vincular a propriedade data do elemento FileDownload a um atributo de contexto do tipo binary. Isso significa que você precisa carregar o anexo na memória e também pode usar rs.getBytes("ANEXO") em vez de rs.getBinaryStream("ANEXO") e converter manualmente o InputStream para um byte[]. No entanto, no NW04s, a forma recomendada é usar o atributo resource do elemento FileDownload e vinculá-lo a um atributo de contexto do tipo Resource. Então, você pode até carregar o arquivo de forma diferida, ou seja, recuperá-lo do banco de dados (por exemplo, usando um PreparedStatement "SELECT ANEXO FROM EMAIL WHERE ID_EMAIL = ?") quando o usuário clicar no link para download. Consulte Carregando InputStream no FileDownload sob demanda.

Em segundo lugar, presumo que você deseja exibir a mensagem usando um elemento UI de Web Dynpro TextView. Assim, o atributo texto do elemento TextView deve ser vinculado a um atributo de contexto do tipo string (e provavelmente você também deseja definir wrapping=true). O primeiro passo é obter a mensagem do banco de dados usando rs.getBytes("MENSAGEM") que resulta em um byte[]. O segundo passo é converter o byte[] em uma String. Como fazer isso depende totalmente do que exatamente é armazenado no banco de dados; não há uma maneira geral de converter um byte[] em uma String. Você precisa saber exatamente como a mensagem de e-mail é armazenada, presumivelmente como texto, no banco de dados como dados binários antes de poder extrair. Se você tiver uma mensagem byte[], pode tentar o seguinte: new String(mensagem, "UTF-8") ou outro conjunto de caracteres, por exemplo, "ISO-8859-1". Talvez a mensagem tenha sido codificada em Base64 antes de ser armazenada no banco de dados, nesse caso, você precisa decodificá-la primeiro em Base64 (se a string terminar com alguns caracteres "=", este pode ser o caso). Existem inúmeras maneiras de converter caracteres em bytes e vice-versa... Claro, se você é o proprietário do aplicativo que armazena a mensagem no banco de dados, é fácil porque você sabe.

Atenciosamente,

Sigiswald

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?