BufferdImage über byte Array als Blob in Datenbank speichern

ARadauer

Grünschnabel
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.

Code:
//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?
 
Hallo,

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

Gruß
Daniel
 
danke ich hab das geändert. hat aber leider nichts geholfen :confused:

der eigentliche Fehler lag hier

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

ich hab das durch das ersetzt und jetzt gehts

Code:
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
 
Zurück