FileInputstream und BinaryStream

nieselfriem

Bekanntes Mitglied
Hallo,

ich habe folgende Frage

Für eine Datenbank habe ich das Objekt Foto
Java:
public class Foto{
   
     private String dateiName;
     private FileInputStream datas;

    public FileInputStream getDatas() {
        return datas;
    }

    public void setDatas(FileInputStream datas) {
        this.datas = datas;
    }
    
    public String getDateiName() {
        return dateiName;
    }

    public void setDateiName(String dateiName) {
        this.dateiName = dateiName;
    }
   
}

Das wird dann in einer DAO Klasse mit der Methode beim Speichern in der Datenbank wie folgt verarbeitet:

Java:
 public void addFoto(Foto foto, int id) throws SQLException, ClassNotFoundException {
        PreparedStatement stmt = null;
        conn = AllowConnect.driver(this.user, this.password, this.dburl, this.className);
        if (conn != null) {
            int anDok = 0;
            java.util.Date dt = new Date();
            Statement query;
            query = conn.createStatement();
            String sql = "SELECT `andokument`.`DOK-ID`  FROM `andokument`";
            ResultSet result = query.executeQuery(sql);
            while (result.next()) {
                anDok = result.getInt("DOK-ID"); // Alternativ: result.getString(1);
                System.out.println("anDok=" + anDok);
            }

            if (anDok == 0) {
                stmt = conn.prepareStatement("INSERT INTO `andokument` ( "
                        + " `andokument`.`name`, "
                        + "`andokument`.`data`, "
                        + "`andokument`.`AN-DOK-ID`)"
                        + "VALUES (?,?,?)");

                stmt.setString(1, foto.getDateiName());
                stmt.setBinaryStream(2, foto.getDatas());
                stmt.setInt(3, foto.getpId());
                stmt.executeUpdate();
            } else {
                stmt = conn.prepareStatement("UPDATE `andokument` SET "
                        + "`andokument`.`name`= ?,"
                        + "`andokument`.`data`= ? "
                        + "WHERE `DOK-ID`= ?");
                stmt.setString(1, foto.getDateiName());
                 stmt.setBinaryStream(2, foto.getDatas());
                stmt.setInt(3, anDok);
                stmt.executeUpdate();


            }
        }
        conn.close();

Ich verwende in der DAO zum Speichern der Daten die Methode setBinaryStream(FileInputStream). Nun habe ich aber das Problem, wenn ich die Daten aus der Datenbank lesen möchte. Dort bekomme ich die Daten aus der Datenbank mit der Methode getBinaryStream() vom ResultSet. Wie wandle ich diesen Stream aber in einen FileInputStream um um ihn dann wieder in mein Fotoobjekt zu speichern?



Gruß niesel
 
S

SlaterB

Gast
ohne Festplatte gehts nicht, aber FileInputSteam ist auch ne schlechte Wahl für ein Attribut,
wenn dann wähle InputStream an sich und schon gehts es syntaktisch auch aus der DB,

aber generell ist es fraglich, einen Stream zu speichern, warum das längerfristig in einem Attribut?
wer liest später aus diesem Stream, wird dann auch geschlossen? soll die DB-Verbindung solange offen bleiben?
lies lieber gleich die Daten, ob als 'Foto' verarbeitet oder einfach byte[], und speichere die fertigen Daten, nicht den Stream
 

nieselfriem

Bekanntes Mitglied
dieser Stream soll dann als Bild in einer Anwendung bzw. als Bild in einem label einfach dargestellt werden. mehr nicht.
Welchen Datentyp sollte ich denn idealerweise verwenden um binärdaten in einem Attribut bzw Objekt zu speichern?

Gruß niesel
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B OutputStream in FileInputStream? Java Basics - Anfänger-Themen 9
W Konstruktor von FileInputStream nicht gefunden Java Basics - Anfänger-Themen 18
B FileInputStream entpacken und Zeile für Zeile entpacken Java Basics - Anfänger-Themen 1
V FileInputStream - read() Java Basics - Anfänger-Themen 2
D String in FileInputStream umwandeln Java Basics - Anfänger-Themen 2
V FileInputStream auf ein swt.Image Java Basics - Anfänger-Themen 6
R FileInputStream findet Datei nicht Java Basics - Anfänger-Themen 5
C FileInputStream read() Overflow Problem Java Basics - Anfänger-Themen 6
C Datentypen Rückgabewert von "new FileInputStream" Java Basics - Anfänger-Themen 4
K FileInputStream in Jar Java Basics - Anfänger-Themen 5
megachucky FileInputStream findet nur absoluten Pfad, keinen Relativen ?! Java Basics - Anfänger-Themen 7
B FileInputStream schliessen: unreported Exception...must be caught Java Basics - Anfänger-Themen 6
W new FileInputStream() blockiert bei fifo (named pipe) Java Basics - Anfänger-Themen 2
G FileInputStream--> Zahlen aus Datei lesen Java Basics - Anfänger-Themen 7
G FileInputStream manipulieren Java Basics - Anfänger-Themen 6
B FileinputStream und BufferedInputStream Java Basics - Anfänger-Themen 12
P Fileinputstream to image? Java Basics - Anfänger-Themen 3
I FileInputStream global deklarieren Java Basics - Anfänger-Themen 2
G relativer Pfad bei FileInputStream Java Basics - Anfänger-Themen 11
T Unterschiedliche Werte beim FileInputStream Lesen Java Basics - Anfänger-Themen 2
F FileInputStream(File file) funzt net Java Basics - Anfänger-Themen 2
R FileInputStream.read() != FileReader.read(). Pls Help Java Basics - Anfänger-Themen 5
C FileInputStream sehr langsam Java Basics - Anfänger-Themen 5
Z FileInputStream bricht ab Java Basics - Anfänger-Themen 6
frau-u Probleme mit richtiger Verwendung von FileInputStream Java Basics - Anfänger-Themen 2
G FileInputStream Java Basics - Anfänger-Themen 6
W aus ObjectInputStream muß FileInputStream werden Java Basics - Anfänger-Themen 12
C FileInputStream und FileOutputStream Java Basics - Anfänger-Themen 4
J BinaryStream Java Basics - Anfänger-Themen 26

Ähnliche Java Themen

Neue Themen


Oben