Bild aus JLabel als Blob speichern

MsYard

Grünschnabel
Guten Abend,
Ich beschäftige mich noch nicht allzu lange und dementsprechend nicht auf allzu hohem Niveau mit Java, deshalb bitte keine Hochkomplexen Codefragmente oder Erklärungen posten.

Mithilfe des JFileChoosers kann ein Bild auf einer GUI hochgeladen werden. Dieses wird mit "setIcon()" in einem JLabel gespeichert. In einem zweiten Schritt, sollen verschiedene Strings und das Bild in einer MySQL-Datenbank gespeichert werden. Mit den Strings funktioniert dies auch problemlos.
Das Bild muss ich jedoch als Blob in der Datenbank speichern und ich verstehe leider garnicht, wie ich dies umsetzte..

Ich habe schon viel gegooglet und dort einiges gefunden, jedoch nichts was mir konkret hilft, da das Bild nie zwischengespeichert wird in der GUI, sondern direkt beim Hochladen aus dem Explorer gespeichert wird.
Ich habe auch schon davon gelesen, dass man nur den Pfad speichern soll. Dies ist in meinem Fall jedoch nicht möglich!

Es wäre super, wenn ihr mir helfen könntet!
Mit freundlichen Grüßen MsYard
 
Hi

da das Bild nie zwischengespeichert wird in der GUI, sondern direkt beim Hochladen aus dem Explorer gespeichert wird.
Wenns bis auf das Problem funktioniert liegts wohl nur daran, dass der Code an die falsche Stellen eingefügt wurde... wie schaut der derzeitige Code denn aus?

dass man nur den Pfad speichern soll. Dies ist in meinem Fall jedoch nicht möglich!
Warum nicht? Ich möchte nochmal betonen, dass alles Andere sehr viele Nachteile hat.
 
Mithilfe dieses Codes öffne ich den FileChooser und speichere das Bild in einem Label.

Java:
private JButton getBtnCover() {
        if (btnCover == null) {
            btnCover = new JButton("Bilder hochladen!");
            btnCover.setBounds(41, 443, 234, 23);
            btnCover.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                   
                   
                    JFileChooser fc = new JFileChooser();
                    FileFilter filter = new FileNameExtensionFilter("Bilder", "gif", "png", "jpg");
                    fc.setAcceptAllFileFilterUsed(false);
                    fc.setFileFilter(filter);
                    int wert = fc.showOpenDialog(null);
                    if (wert == JFileChooser.APPROVE_OPTION) {

                        File file = fc.getSelectedFile();
                        Image image = java.awt.Toolkit.getDefaultToolkit().getImage(file.getAbsolutePath());
                        ImageIcon ii = new ImageIcon(image);
                        ii.setImage(ii.getImage().getScaledInstance(212, 148, Image.SCALE_SMOOTH));
                        lblbild.setIcon(ii);
                       

                    }
                    if (wert == JFileChooser.CANCEL_OPTION) {

                    }
                }
            });

        }
        return btnCover;
    }


Um etwas in der Datenbank zu speichern gehe ich so vor:
Java:
public void cover(String bild){
        try {
            Connection con = DBConnect.getCon();
            PreparedStatement ps = con.prepareStatement(inserieren);
            con.setAutoCommit(false);
           
                ps.setString(1, bild);
                ps.executeUpdate();
   
        }

        catch (Exception ex) {
            System.out.println("fehler");
        }

    }
Ich weiß, dass das so nicht geht, weil es als String gespeichert wird. Aber genau da liegt mein Problem, ich weiß nicht wie ich das umsetze.
Die beiden Methoden befinden sich in unterschiedlichen Klassen.


Warum nicht? Ich möchte nochmal betonen, dass alles Andere sehr viele Nachteile hat.

Das ganze ist nur ein Schulprojekt, d.h es werden keine großen Datenmengen gespeichert und es ist vom Zugriff her, glaube ich, deutlich einfacher, wenn die Bilder direkt in der Datenbank sind.
 
Zurück