IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Création d'un Clob avant d'accéder à la base


Sujet :

JDBC Java

  1. #1
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut Création d'un Clob avant d'accéder à la base
    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

  2. #2
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    J'ai bien essayé ceci :

    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
    26
    27
    28
    29
    30
     
        int n = 0; 
        // Pour le traitement du Clob
        BufferedReader fileReader = null;
        StringReader stringReader = null;
     
        try {
            // Traitement du Clob
            // Lecture du contenu du fichier à insérer dans le Clob
            File file = new File(obj.getMonFichier());
            fileReader = new BufferedReader(new FileReader(file));
            String ligne = null;
            String texte = "";
            while((ligne = fileReader.readLine()) != null) {
                texte += ligne + "\n";
            }
            stringReader = new StringReader(texte);
     
            PreparedStatement ps = dbHandler.prepareStatement("pipo.insert");
     
            // On met en place les paramètres du statement
    ...
            ps.setString(4, obj.getMonFichier());
            ps.setCharacterStream(5, stringReader, texte.length());
    ...        
            n = ps.executeUpdate();
        } finally {
            try {fileReader.close();} catch (Exception e) {}
            try {stringReader.close();} catch (Exception e) {}
        }
    Mais ça ne fonctionne pas !

    Quelqu'un a-t-il une idée ?

    Merci.

Discussions similaires

  1. Réponses: 14
    Dernier message: 02/05/2012, 15h54
  2. imposer mot de passe avant d'accéder à Tomcat et à l'application
    Par achi2005 dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 26/06/2008, 10h54
  3. Réponses: 6
    Dernier message: 04/12/2007, 17h25
  4. Création de Task executé avant la compliation.
    Par mr_keyser dans le forum Framework .NET
    Réponses: 3
    Dernier message: 05/09/2007, 21h54
  5. Lancement d'une application avant d'accéder à Windows
    Par benymypony dans le forum Windows
    Réponses: 4
    Dernier message: 10/08/2006, 20h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo