Hallo,
ich will Bilder in meiner Datenbank abspeichern. Das Abspeichern funktioniert auch schon (Hab irgendwo ein Tutorial dazu gefunden), aber dafür schaff ichs grad nicht meine Blob Daten wieder zurück zu einem Image zu konvertieren.........
Hier mein Einfügen Code:
Wobei oben "bild" den Typ ImageIcon hat.
Und jetzt mein Code zum auslesen:
Jetzt weiß ich aber nicht, wie ich meine Blob Daten zum Image umwandeln kann....
Ich hätte es irgendwie so probiert:
ObjectOutputStream oos = new ObjectOutputStream();
oos.writeObject(blob.setBinaryStream(1));
oos.close();
Nur muss ich da beim Erzeugen vom ObjectOutputStream irgendwie das Bild angeben, aber ich seh da nirgends eine Funktion die mir einen OutputStream zurückgibt... Mit ObjectInputStream hab ichs auch nicht hinbekommen.....
edit:
Ich probiers daweil so:
Problem ist, dass mein ImageIO.read mir ein NULL zurückgibt....
In der Datenbank steht es so:
0 org.hsqldb.types.BlobDataID@138b4ed
1 org.hsqldb.types.BlobDataID@64eff0
2 org.hsqldb.types.BlobDataID@14e54d8
(wobei die erste Spalte die Bildnummer ist). ist das falsch abgespeichert?
Beim oberen Code würde mir blob.length() die Länge 160254 liefern, aber getBinaryStream gibt mir Stream: org.hsqldb.jdbc.BlobInputStream@1787395 zurück, aber wenn ich darauf Zugreife krieg ich eine NULLPointer Exception...
ich will Bilder in meiner Datenbank abspeichern. Das Abspeichern funktioniert auch schon (Hab irgendwo ein Tutorial dazu gefunden), aber dafür schaff ichs grad nicht meine Blob Daten wieder zurück zu einem Image zu konvertieren.........
Hier mein Einfügen Code:
Java:
blob = conn.createBlob();
ObjectOutputStream oos = new ObjectOutputStream(blob.setBinaryStream(1));
oos.writeObject(bild);
oos.close();
pStmt = conn.prepareStatement("INSERT INTO ***** "
+ "VALUES(?,?)");
pStmt.setInt(1, ***);
pStmt.setBlob(2, blob);
Wobei oben "bild" den Typ ImageIcon hat.
Und jetzt mein Code zum auslesen:
Java:
pStmt = conn.prepareStatement("SELECT daten FROM Bild WHERE BNummer = ?");
pStmt.setInt(1, bildNummer);
rs = pStmt.executeQuery();
blob = rs.getBlob(1);
ImageIcon i = new ImageIcon();
Jetzt weiß ich aber nicht, wie ich meine Blob Daten zum Image umwandeln kann....
Ich hätte es irgendwie so probiert:
ObjectOutputStream oos = new ObjectOutputStream();
oos.writeObject(blob.setBinaryStream(1));
oos.close();
Nur muss ich da beim Erzeugen vom ObjectOutputStream irgendwie das Bild angeben, aber ich seh da nirgends eine Funktion die mir einen OutputStream zurückgibt... Mit ObjectInputStream hab ichs auch nicht hinbekommen.....
edit:
Ich probiers daweil so:
Java:
img = ImageIO.read(blob.getBinaryStream());
p.setBild(new ImageIcon(img));
Problem ist, dass mein ImageIO.read mir ein NULL zurückgibt....
In der Datenbank steht es so:
0 org.hsqldb.types.BlobDataID@138b4ed
1 org.hsqldb.types.BlobDataID@64eff0
2 org.hsqldb.types.BlobDataID@14e54d8
(wobei die erste Spalte die Bildnummer ist). ist das falsch abgespeichert?
Beim oberen Code würde mir blob.length() die Länge 160254 liefern, aber getBinaryStream gibt mir Stream: org.hsqldb.jdbc.BlobInputStream@1787395 zurück, aber wenn ich darauf Zugreife krieg ich eine NULLPointer Exception...
Zuletzt bearbeitet: