Bonjour,

Je signale que je ne suis pas du tout familier avec les Clob.
Voilà mon problème.

J'ai une classe (bean) contenant un membre de type Clob (java.sql.Clob).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
public class Pipo implements java.io.Serializable {
...
    protected String monFichier;
 
    protected Clob maDonnee;
...
 
    public String getMonFichier() {
        return monFichier;
    }
 
    public void setMonFichier(String monFichier) {
        this.monFichier = monFichier;
    }
 
    public Clob getMaDonnee() {
        return maDonnee;
    }
 
    public void setMaDonnee(Clob maDonnee) {
        this.maDonnee = maDonnee;
    }
...
}
J'ai aussi une classe DAO qui lui est associée

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public class PipoDAO {
    public int insert(Pipo obj) throws SQLException {
        PreparedStatement ps = dbHandler.prepareStatement("pipo.insert");
...
        ps.setString(4, obj.getMonFichier());
        ps.setClob(5, obj.getMaDonnee());
...
        int n = ps.executeUpdate();
...
    }
 
}
Je souhaite faire quelque chose comme ce qui suit. C'est à dire, créer le bean, le remplir, puis seulement après, accéder à la base pour insérer l'enregistrement.

La particularité est de remplir le Clob avec le contenu d'un fichier.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
...
    File file = new File("pipo.txt");
...
    DatabaseHandler dbHandler = DatabaseHandler.getInstance();
    PipoDAO pipoDAO = PipoDAO.getInstance();
...
    Pipo pipo = new Pipo();
...
    // Remplir le bean
...
    pipo.setMonFichier("pipo.txt");
    CLOB clob = fileToClob(file);
    pipo.setMaDonnee(clob);
...
 
    // Mise à jour de la base
    pipoDAO.insert(pipo);
...
Est-ce possible?
Si oui, comment faire?

Il faudra ensuite prévoir la procédure inverse qui consiste à lire la donnée dans la base, puis remplir un fichier ou plutot un reader.

Merci.

- Dominique Crétel