# Blob aus Oracle-Datenbank



## Guest (16. Jun 2008)

Hallo liebe leuz!
Ich habe mittels eines File Choosers ein Bild in eine Oracle Datenbank geladen (BLOB). Jetzt möchte ich es mittels itext in einem PDF anzeigen, kann mir jemand sagen wie ich das bild wieder aus der Datenbank raus bekomme?
Schlussendlich sollte es ein Image(com.lowagie.text.Image) werden. Aber darum kann ich mich später noch kümmern, erstmal muss ich es einfach irgendwie raus bekommen!

vielen dank!
lg
phil


----------



## FArt (16. Jun 2008)

http://www.google.de/search?hl=de&q=java+read+blob+oracle&btnG=Google-Suche&meta=


----------



## Guest (16. Jun 2008)

ich checks net ganz...

so hab ich das bild in die Datenbank geschrieben


```
File input = new File(jfc.getSelectedFile().getPath());

                    FileInputStream inputFileInputStream = new FileInputStream(input);

                    sqlText = "UPDATE usb_persons SET Unterschrift= EMPTY_BLOB() WHERE ID='" + persnr + "'";
                    stmt.executeUpdate(sqlText);

                    sqlText = "SELECT Unterschrift FROM USB_PERSONS WHERE  id = '" + persnr + "' FOR UPDATE";
                    ResultSet rset = stmt.executeQuery(sqlText);
                    rset.next();
                    BLOB image = ((OracleResultSet) rset).getBLOB("Unterschrift");

                    int chunkSize = image.getChunkSize();
                    byte[] binaryBuffer = new byte[chunkSize];

                    long position = 1;
                    int bytesRead = 0;
                    int bytesWritten = 0;

                    while ((bytesRead = inputFileInputStream.read(binaryBuffer)) != -1) {
                        bytesWritten = image.putBytes(position, binaryBuffer, bytesRead);
                        position += bytesRead;
                    }

                    inputFileInputStream.close();

                    conn.commit();
                    rset.close();
                    stmt.close();
```

... eigentlich müsste ich ja nur den FileInputStream durch einen OutputStream ersetzen und dann das putBytes durch getBytes oder?

Denn mit Image.getInstance(*blob.getBytes*(1, (int) blob.length())) bekomm ich dann das itext-Image.
Aber da scheitere ich ja schon bei der ersten Zeile! Denn das File "input" habe ich ja mittels dem Pfad erstellt der mir über den FileChooser übergeben wurde, aber beim auslesen habe ich ja gar keinen Pfad mehr, das bild ist ja in der Datenbank!
Doch ohne dieses "input" kann ich auch keinen FileInputStream(beim auslesen OutputStream) erstellen.

Bitte helft mir, ich glaub ich denk da zu unlogisch!


----------

