Oracle - Extraer bytes[] de campo BLOB

 
Vista:

Extraer bytes[] de campo BLOB

Publicado por Joaquin (1 intervención) el 13/09/2016 13:44:22
Buenos días.

Tengo que enviar a un SW montado en Java un fichero que en la BBDD (Oracle 11g) se encuentra en formato BLOB.
He intentado utilizar el tipo de datos java.sql.blob pero no logro enviar este dato de Oracle a Java.
Necesito enviar al SW java el array de bytes del campo de la columna BLOB de Oracle.

¿es posible hacer esta conversión?
¿Cómo se haría?

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Extraer bytes[] de campo BLOB

Publicado por Rafael (328 intervenciones) el 14/09/2016 07:54:01
Esta función te puede ayudar, aunque es mas un tema de JAVA que de Oracle.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
public class Main {
  static String url = "jdbc:oracle:thin:@localhost:1521:BaseDatos";
  static String username = "usuario";
  static String password = "contraseña";
  public static void main(String[] args) throws Exception {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection conn = DriverManager.getConnection(url, username, password);
 
    String sql = "SELECT campo_id, campo_blob FROM tabla_con_blob";
    PreparedStatement stmt = conn.prepareStatement(sql);
    ResultSet resultSet = stmt.executeQuery();
 
    //Este buqle es para recuperar todos los registros.
    while (resultSet.next()) {
      String id_campo = resultSet.getString(1);
      File blob = new File("C:\\blob"+id_campo+".algo");
      FileOutputStream fos = new FileOutputStream(blob);
 
      byte[] buffer = new byte[1];
      InputStream is = resultSet.getBinaryStream(3);
      //Este buqle va recuperando el BLOB
      while (is.read(buffer) > 0) {
        fos.write(buffer);
      }
      fos.close();
    }
    conn.close();
  }
}

Vaya con esto creo podras adaptar la rutina a lo que necesitas.

Saludos
Pd. Si la información te sirve a mi me sirve un +1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar