Ajouter un commentaire

apone

... suite de l'affaire donc ! La piste du stockage de l'image dans la base.

J'ai trouvé sur un autre forum un bout de code qui me paraît intéressant, le voici :

public static void insertImage(File file){
        String name = file.getName();
        
        try {
            Connection conn = DriverManager.getConnection("jdbc:hsqldb:file:/EBouffeCorp/db_files/db_file", "sa", "syspasswd");
            
            FileInputStream stream = new FileInputStream(file);
            
            String sql = "INSERT INTO temp_table VALUES(?,?)";
            PreparedStatement statement = conn.prepareStatement(sql);
            
            statement.setString(1, name);
            statement.setBinaryStream(2, stream, (int)file.length());
            statement.executeUpdate();
            
            stream.close();
            conn.close();
            
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }

Si je comprend bien : la requête SQL insère dans temp_table les valeurs qui sont définie juste après, par les : statement.setString(1,name) etc... ? Le 1 et le 2 représentant les 2 points d'intérogation dans : VALUE(?,?), c'est bien ça ? Si c'est le cas, je ne connaissais pas cette méthode avec des "?"...

Partant de ça (qui est peut être faux je n'en sais rien), je dois donc créer une table "temp_table" dans laquelle je stockerai le name du produit et l'image correspondante.

Je déclare le type de ma première colonne comme une String, mais la deuxième colonne ? Comme un int ? C'est là que je coince...

Après, l'utilisation de cette méthode avec mon JFileChooser reviendrai à un simple :
insertImage(f1);
(f1 étant la File récupérée)

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 PPPP   Y   Y   CCC  EEEE  TTTTTT 
P P Y Y C E TT
PPPP Y C EEE TT
P Y C E TT
P Y CCC EEEE TT