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 :

Insérer une ArrayList dans une Base de données


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut Insérer une ArrayList dans une Base de données
    Bonjour à tous,

    Je vous explique mon problème, j'ai une ArrayList qui contient des coordonnées de point et je voudrais la stocker dans une base de données pour la récupérer quand mon application redémarra. J'ai vu sur la doc de java sun, qu'une ArrayList été serializable donc en principe je peu stocker une ArrayList dans un type Blob.

    Voilà mon code pour la stocker :
    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
    31
    32
    try
            {
                    //Statement instruction = null;
     
                    Class.forName("com.mysql.jdbc.Driver");
     
                    connexion = DriverManager.getConnection("jdbc:mysql://127.0.0.1/gpem","root","");
     
                    String sql = "INSERT INTO table (ArrayList) VALUES (?)";
                    PreparedStatement instruction = connexion.prepareStatement(sql);
     
                    //insertion de l'objet
                    instruction.setObject(1, tabtombe.toArray());
                    instruction.executeUpdate(); 
            }
            catch (ClassNotFoundException ex) {
                JOptionPane.showMessageDialog(null,"Class introuvable : \n"+ex.getMessage());
            }
            catch (SQLException ex)
            {
                JOptionPane.showMessageDialog(null,"Connexion impossible : \n"+ex.getMessage());
            }
            finally
            {
                try{
                    if (connexion !=null)
                        connexion.close();
                }
                catch(SQLException ex){
                    ex.printStackTrace();
                }
            }
    Mon code pour récupérer l'ArrayList contenu dans la base de données :
    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
    31
    32
    33
    34
    35
    36
    try
            {
                    Statement instruction = null;
                    ResultSet res =null;
                    Class.forName("com.mysql.jdbc.Driver");
     
                    connexion = DriverManager.getConnection("jdbc:mysql://127.0.0.1/gpem","root","");
                    instruction = connexion.createStatement();
                    JOptionPane.showMessageDialog(null,"Connexion à la base OK");
                    res = instruction.executeQuery("Select ArrayList_concession from tb_tracer_concession where id_tracer_concession = '6'");
                    res.next();
                    InputStream stream = res.getBlob("ArrayList_concession").getBinaryStream();
                    ObjectInputStream objet = new ObjectInputStream(stream);
                    tabtombe=(ArrayList<concession>) objet.readObject();
            }
            catch (IOException ex) {
                JOptionPane.showMessageDialog(null,"Marche pas : \n"+ex.getMessage());
            } 
            catch (ClassNotFoundException ex) {
                JOptionPane.showMessageDialog(null,"Class introuvable : \n"+ex.getMessage());
            }
            catch (SQLException ex)
            {
                JOptionPane.showMessageDialog(null,"Connexion impossible : \n"+ex.getMessage());
            }
            finally
            {
                try{
                    if (connexion !=null)
                        connexion.close();
                }
                catch(SQLException ex){
                    ex.printStackTrace();
                }
            }
        }
    Quand je lance mon programme pour récupérer mon ArrayList j'ai ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    invalid stream header:5B66696E
    qui correspond à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjectInputStream objet = new ObjectInputStream(stream);
    Quelqu'un aurait une idée car sa fait une semaine que je suis dessus et avec mon professeur on trouve pas le problème avec l'ArrayList.

    Merci d'avance pour vos réponse.

    Cordialement takepaf.

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Tu utilises deux éléments différents :
    • setObject() pour insérer dans la base.
    • getBlob() pour lire dans la base


    Je ne sais pas comment fonctionne setObject() avec une liste

    Il faudrait que tu utilises la même choses des deux cotés, mais plus globalement au lieu de sérialiser la liste je ferrais plutôt un mapping des données dans une table...


    a++

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,



    Tu utilises deux éléments différents :
    • setObject() pour insérer dans la base.
    • getBlob() pour lire dans la base


    Je ne sais pas comment fonctionne setObject() avec une liste

    Il faudrait que tu utilises la même choses des deux cotés, mais plus globalement au lieu de sérialiser la liste je ferrais plutôt un mapping des données dans une table...


    a++
    Merci pour avoir répondu aussi vite, je regarde en détaille une fois rentrée chez moi, je vous tien au courant dans la soirée.

    Cordialement takepaf

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    J'ai résolu mon problème en rentrant les informations une par une dans la base de données.

    Merci encore pour votre aide.

    Cordialement Guillaume

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [XL-2003] Insérer la valeur d'une cellule dans une phrase d'une autre
    Par DonaldTron dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/04/2009, 19h50
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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