Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Java:odczytywanie obiektów Blob z Oracle

Możesz uzyskać obiekt InputStream przez ResultSet.getBinaryStream() metoda.

PreparedStatement prepareStatement = con.prepareStatement("select * from SMD_DATESTREEMAP");
ResultSet rs=prepareStatement.executeQuery();
      
while(rs.next())
{
   oracle.jdbc.driver.OracleBlobInputStream bos = (oracle.jdbc.driver.OracleBlobInputStream) rs.getBinaryStream(2) ;
       
   ObjectInputStream out = new ObjectInputStream(bos);
      
   map = (TreeMap<DateTime, Integer>) out.readObject();
   ...
}

Możesz zapisać tablicę bajtów zamiast strumienia binarnego.

ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(map);
out.flush();
out.close();
byte[] buf = bos.toByteArray();
      
PreparedStatement prepareStatement = con.prepareStatement("INSERT INTO SMD_DATESTREEMAP VALUES(?,?)");
prepareStatement.setInt(1, 1);
prepareStatement.setBytes(2, buf);
prepareStatement.executeUpdate();
prepareStatement.close();

i odczytaj tablicę bajtów:

while(rs.next())
{ 
    byte []buf=rs.getBytes(2);
    ByteArrayInputStream bos=new ByteArrayInputStream(buf);
    ObjectInputStream out = new ObjectInputStream(bos);
    map=(TreeMap<DateTime, Integer>)out.readObject();
    ..
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSIS - wartość nie może zostać przekonwertowana z powodu potencjalnej utraty danych

  2. Załaduj arkusz danych Excel do bazy danych Oracle

  3. Dlaczego SQL*Plus zatwierdza przy wyjściu?

  4. Zagnieżdżone łączenie pętli w Oracle 11g

  5. Funkcja RPAD() w Oracle