BLOB to ImageIcon?

Juggl3r

Mitglied
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:
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:

Juggl3r

Mitglied
Unglaublich...
Habs jetzt rausgefunden, falls zufälligerweise irgendjemand anderes auch mal die gleiche Fehlermeldung kriegt........
Ich verwende als Datenbank HyperSQL und in Version 2.0 wird immer eine Exception geworfen, wenn man Blobs einfügen will -.- Nämlich die tolle vielaussagende Exception "lob is no longer valid".
Man muss 2.2.x verwenden, damit es geht......
 

Juggl3r

Mitglied
Hmmm, irgendwie geht es doch nicht -.- Kann mir bitte jemand sagen was ich falsch mache?


Java:
			bild.setDescription("TEST");
			blob = conn.createBlob();
		
			ObjectOutputStream oos = new ObjectOutputStream(blob.setBinaryStream(1));
			oos.writeObject(bild);
		    oos.close();
		    
		    ImageIcon i = new ImageIcon(blob.getBytes( 1L, (int) blob.length() ) );
		    System.out.println("TESTER: " + i.getDescription());

Und ich bekomme als Ausgabe NULL. Warum bekomme ich nicht TEST?
 

homer65

Top Contributor
Kann ich leider nicht, da ich ehrlich gesagt nicht verstehe was du da machst.
Wenn du aber an einem funktionierenden Beispiel interessiert bist, kannst dir den JMyScanner von der http://www.edv-ehm.de/ Seite anschauen.
Der scannt Papier ein und speichert dann in einer MySQL Datenbank als Blob. Das auslesen aus der MySQL Datenbank wird auch gemacht.
JMyScanner ist Open Source.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb Breite und Höhe von Blob Datenbankprogrammierung 7
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
D MySQL Sicherheitslücke als Blob? Datenbankprogrammierung 3
buggy84 MySQL BLOB Geschwindigkeit Datenbankprogrammierung 16
L H2 Blob Dateien in der DB komprimieren? Datenbankprogrammierung 8
L H2 Blob Spalte im Client anzeigen Datenbankprogrammierung 2
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
E Wie kann ich textdateien, die als BLOB abgespeichert sind, aus der Datenbanktabelle auslesen? Datenbankprogrammierung 23
E Wie kann man BLOB-Spalten in DB2 einfügen? Datenbankprogrammierung 9
R MySQL Blob aus DB auslesen und einer Tabelle ausgeben Datenbankprogrammierung 7
Kenan89 Sinnvoller URL oder BLOB? Datenbankprogrammierung 2
F H2:Wie kann man insert eine Reihe "int" wert als blob in table? Datenbankprogrammierung 12
N Leeres Blob in ein PreparedStatement eintragen Datenbankprogrammierung 2
C MySQL Fragen zu BLOB zu byte[], Date zu java.util.Date uvm. Datenbankprogrammierung 6
D Blob MimeTyp auslesen Datenbankprogrammierung 2
P MySQL Objekt aus BLOB auslesen Datenbankprogrammierung 3
M Problem Array in BLOB-Feld in DerbyDB zu speichern Datenbankprogrammierung 5
C MP3 in DB als Blob, wieder auslesen und als MP3 speichern??? Datenbankprogrammierung 8
S BLOB in Datei speichern Datenbankprogrammierung 8
S Hibernate Blob mit Stream speichern Datenbankprogrammierung 3
V PostgreSQL langsam (Blob) Datenbankprogrammierung 10
G Blob aus Oracle-Datenbank Datenbankprogrammierung 2
O Vector als Blob in Oracle Datenbank speichern Datenbankprogrammierung 3
D Insert Oracle BLOB Datenbankprogrammierung 1
B Java Derby Datenbank mit CLOB & BLOB Datenbankprogrammierung 5
J Bild aus Mysql Blob in Webseite einbinden Datenbankprogrammierung 9
H Blob erzeugen Datenbankprogrammierung 2
T Inhalt von Blob in Console ausgeben Datenbankprogrammierung 2
G Sybase IMAGE-Daten zu MySQL als BLOB schreiben. Datenbankprogrammierung 2
T Datei (Blob) mit verknüpfter Software öffnen? Datenbankprogrammierung 4
G File nach Blob konvertieren ? Datenbankprogrammierung 6
G JPEG to BLOB Datenbankprogrammierung 7
H File into blob Datenbankprogrammierung 3
A Blob in Oracle-DB einfügen (veraltete Methode) Datenbankprogrammierung 3
EagleEye Blob -> backup Datenbankprogrammierung 6
Y Problem mit Ablage einer Datei in einer Datenbank als BLOB Datenbankprogrammierung 6
O Oracle Blob in MySQL Blob umwandeln Datenbankprogrammierung 2
S ImageIcon in ein ByteArray speichern für in die DB Datenbankprogrammierung 2
L ImageIcon in/aus Datenbank speichern/lesen Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben