[JDBC] Wie krieg ich ein verdammtes BLOB in die Datenbank?



  • Ich hab ein kleines Problem. Ich möchte gerne eine einheitliche Schnittstelle schaffen, dass man etwas, je nach Einstellung in eine Datei oder ein Datenbank-BLOB reinschreibt.
    Ich habe also ne Methode

    OutputStream foo();
    

    um einen OutputStream zu getten, in den ich reinschreiben will.
    Die Methode foo() liefert jetzt je nach Einstellung einen FileOutputStream oder einen Stream, über den ich in die Datenbank schreiben kann.
    Letzteres weiß ich aber nicht, wie ich es bewerkstelligen soll. So ein Blob hat schon eine Methode setBinaryStream, mit der ich nen OutputStream getten könnte. Das Problem ist aber, das foo() die ganze Datenbankgeschichte mit PreparedStatement usw. erledigen soll. Ich kann das Teil jetzt aber nicht closen, denn wenn ich nen OutputStream zurückliefere, dann muss man darauf auch noch schreiben können.

    Wie könnte eine einheitliche Schnittstelle für BLOB-schreiben und File-schreiben aussehen, so dass man von außen nur noch schreiben muss, egal auf was?? Man soll es beim Aufrufen der Methode foo() nicht wissen müssen, auf welches Ziel das Programm gerade eingestellt ist.
    Ich kenne mich mit dem ganzen JDBC noch kaum aus, und übersehe bestimmt eine elegante Möglichkeit.



  • Ich hätte vielleicht noch dazu sagen sollen, dass die einzige Möglichkeit, die Daten, die gespeichert werden sollen, zu bekommen, ist, einer Methode getData(OutputStream) einen OutputStream zu übergeben.

    Ich werde jetzt folgendes probieren: Als OutputStream einen ByteArrayOutputStream zu übergeben. Da kann die Methode dann erstmal reinschreiben, wie sie lustig ist. Anschließend der Inhalt vom ByteArrayOutput extrahiert und je nach Einstellung in einen FileOutputStream geschrieben oder ein ByteArrayInputStream erstellt, der dann von dem PreparedStatement ausgelesen werden kann.

    Ich weiß, dass die Problembeschreibung zu wünschen übrig lässt, ich sag einfach mal danke. 🙂


Anmelden zum Antworten