# BufferdImage über byte Array als Blob in Datenbank speichern



## ARadauer (28. Januar 2008)

Hallo ich habe hier ein Objekt, das ein Dokument repräsentiert, dass als Blob in eine Datenbank gespeichert werden soll.

Die Daten ansich halte ich als byte[], jetzt bin ich leider an meine ersten Versuche gescheitert um so Bilder zu speichern.

Ich konnte den Fehler schon einigermassen eingrenzen, nur weiß nicht nicht genau, wo es bei den folgenden Schritten hapert und wie ich sie ersetzen kann.


```
//image ist ein BufferedImage, zu diesem Zeitpunkt noch ok
dokument.setData(((DataBufferByte) image.getData().getDataBuffer()).getData());

//die daten werden als byte Array gehalten
public void setData(byte[] data) {
       this.data = data;
}

//so hänge ich die Daten ins Prepared Statement
prepareStatement.setObject(7, dokument.getData());
```

der Typ in der DB ist ein Blob

Über Toad habe ich schon Testbilder in die DB eingefügt, die werden von meinem Ausgabe Servlet brav angezeigt, nur die Bilder die ich selber in die DB schreibe, wollen nicht.... 
jemand eine Idee wo ich ausbessern soll?


----------



## SotDNeo (28. Januar 2008)

Hallo,

ich habe Bilder in eine Oracle DB mit der Funktion setBlob geschoben. Diese Funtkion gibt es bei PreparedStatement und bei CallableStatement.

Gruß
Daniel


----------



## ARadauer (29. Januar 2008)

danke ich hab das geändert. hat aber leider nichts geholfen 

der eigentliche Fehler lag hier

"((DataBufferByte) image.getData().getDataBuffer()).getData());"

ich hab das durch das ersetzt und jetzt gehts


```
public static byte[] bufferedImageToByteArray(BufferedImage img) throws ImageFormatException, IOException{
		ByteArrayOutputStream os = new ByteArrayOutputStream();
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
		encoder.encode(img);
		return os.toByteArray();	
	}
```

Schöne Grüße


----------

