¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Recuperación de imágenes en consultas SQL para almacenamiento en beans: guía paso a paso

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

Tengo una tabla con 2 campos de tipo imagen.

Este tipo de dato imagen se utiliza para almacenar

emailid | attachmentname | adjunto | mensaje

adjunto y mensaje son ambos de tipo imagen

En mi consulta... ¿necesito especificar una forma de recuperarlos... o solo como una declaración select normal?

select emailid, attachmentname, attachment, mensaje from MailTable

Toda la información debe devolverse a un bean

String emailid=""; getter/setter

String attachmentname=""; getter/setter

byte[] attachment=null; getter/setter

byte[] mensaje=null; getter/setter

bean.setemailid(emailid);

bean.setattachmentname(attachment);

¿Cómo voy a establecer el adjunto y el mensaje con byte[];

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

4 Respuestas

0
Cargando...

Hola,

Si la fuente de bytes es una cadena, simplemente bytes.toString debería hacer el truco.

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

El tipo de dato de imagen realmente no significa que contenga una imagen, ¿verdad?

Si tengo un mensaje largo... ¿todavía puedo almacenarlo como imagen, ¿verdad?

Quiero que este mensaje se muestre en el 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"); devolverá un carácter ilegible que más tarde quiero vincularlo al cuadro de texto

[ .......................... .....mensaje aquí........................... ]

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

Visita mi blog

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

Saludos, Anilkumar

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

Hola yzme,

Según Usando tipos de datos avanzados, el tipo de SQL Server imagen se mapea al tipo JDBC LONGVARBINARY, que a su vez se mapea a varios tipos posibles de Java: byte[] (predeterminado), Blob, CharacterStream, BinaryStream, String. El enlace también contiene algunos fragmentos de código. Ten en cuenta que el tamaño máximo del tipo de dato imagen es (2^31 - 1) bytes, que son 2 GB.

Supongo que quieres "mostrar" el adjunto utilizando un elemento UI de Web Dynpro FileDownload. En NW04, la única manera es vincular la propiedad data del elemento FileDownload a un atributo de contexto de tipo binary. Esto significa que necesitas cargar el adjunto en memoria y también puedes usar rs.getBytes("ADJUNTO") en lugar de rs.getBinaryStream("ADJUNTO") y convertir manualmente el InputStream a un byte[]. Sin embargo, en NW04s, la forma recomendada es utilizar el atributo resource del elemento FileDownload y vincularlo a un atributo de contexto de tipo Resource. Luego incluso puedes cargar el archivo de forma diferida, es decir, recuperarlo de la base de datos (por ejemplo, usando un PreparedStatement "SELECT ADJUNTO FROM CORREO WHERE ID_CORREO = ?") cuando el usuario haga clic en el enlace de descarga. Consulta Carga del InputStream en FileDownload a petición.

En segundo lugar, asumo que quieres mostrar el mensaje utilizando un elemento UI de Web Dynpro TextView. Entonces, el atributo texto del elemento TextView debe estar vinculado a un atributo de contexto de tipo string (y probablemente también quieras establecer wrapping=true). Lo primero que debes hacer es obtener el mensaje de la base de datos usando rs.getBytes("MENSAJE") que te da un byte[]. Lo segundo que debes hacer es convertir el byte[] a un String. Cómo hacerlo depende completamente de lo que exactamente se almacena en la base de datos; no hay una forma general de convertir un byte[] a un String. Necesitas saber absolutamente cómo se almacena el mensaje de correo electrónico, presumiblemente texto, en la base de datos como datos binarios antes de poder extraerlo. En caso de que tengas un mensaje byte[], podrías intentar lo siguiente: new String(mensaje, "UTF-8") u otro conjunto de caracteres, por ejemplo, "ISO-8859-1". Tal vez el mensaje fue codificado en Base64 antes de almacenarlo en la base de datos, en cuyo caso necesitas decodificarlo primero en Base64 (si la cadena termina con algunos caracteres "=", este podría ser el caso). Hay un sinfín de formas de convertir caracteres en bytes y viceversa... Por supuesto, si eres el propietario de la aplicación que almacena el mensaje en la base de datos, es fácil porque lo sabes.

Saludos cordiales,

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?