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 :

Le preparedStatement m'enregistre qu'une seule image


Sujet :

JDBC Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Le preparedStatement m'enregistre qu'une seule image
    Bonjour,
    Je veux enregistrer de mon appli en base un objet qui contient des champs de type string et 3 champs de type InputStream.
    j'ai regardé sur le net et j'ai constate que pas mal de gents utilise Le prepared statement pour cela.
    Mon problème c'est qu'il m'enregistre tout les champs de type String et un seul chams image pas les deux autres. Je ne comprends absolument rien ...

    .......
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            sql = "insert into t_annonce (ID, SSTHEME, TITRE, CONTENU,PHOTOPR, PHOTOSC1, PHOTOSC2) values (?,?,?,?,?,?,?)";
            connection = getConnection();
            PreparedStatement ps = connection.prepareStatement(sql);
     
            try 
            {
                ps.setString(1, annonce.getId());
                ps.setString(2,annonce.getSsTheme() );
                ps.setString(5,annonce.getTitre() );
                ps.setString(6, annonce.getContenu());
                ps.setBinaryStream(8, annonce.getPhotopr());
                ps.setBinaryStream(9, annonce.getPhotosc1());
                ps.setBinaryStream(10, annonce.getPhotosc2());
             ps.executeUpdate();
    .......

    J'ai besoin de votre aide,
    Merci,

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    D'apres ton SQL command il y a 7 parametres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "insert into t_annonce (ID, SSTHEME, TITRE, CONTENU,PHOTOPR, PHOTOSC1, PHOTOSC2) values (?,?,?,?,?,?,?)";
    Et ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ps.setString(1, annonce.getId());
    ps.setString(2,annonce.getSsTheme() );
    ps.setString(5,annonce.getTitre() );
    ps.setString(6, annonce.getContenu());
    ps.setBinaryStream(8, annonce.getPhotopr());
    ps.setBinaryStream(9, annonce.getPhotosc1());
    ps.setBinaryStream(10, annonce.getPhotosc2());
    Il faut mettre les parametres dans l'ordre 1,2,...7

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse,
    Mais en fait, c'est pas ce que j'ai mis dans mon code.
    c'est parsque j'écrivais ça rapidement,

    mon code c'est celui-la :

    ps.setString(1, annonce.getId());
    ps.setString(2,annonce.getSsTheme() );
    ps.setString(3,annonce.getTitre() );
    ps.setString(4, annonce.getContenu());
    ps.setBinaryStream(5, annonce.getPhotopr());
    ps.setBinaryStream(6, annonce.getPhotosc1());
    ps.setBinaryStream(7, annonce.getPhotosc2());

    Merci pour toute réponse ! je suis preneur

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    salu,
    j'ai jeté un coup d'oeil, mais malheureusement ya pas ce que je cherche !
    merci,

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Comment sont définis tes champs dans la base de données ?
    Quelle base de données ?

    Tu utilises quelle implémentation du PreparedStatement ?
    Normalement, tu devrais avoir un 3ème paramètre "longueur" avec le setBinaryStream(idx, stream, length);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    String dans l'appli equvalent a varchar dans la base mysql
    InputStream dans l'appli equivalent a blob dans la base.
    j'utilise java 1.6,

    setBinaryStream(idx, stream, length); j'ai pas mis la longueur et ça a marché pour une image. j'ai essayé aussi avec annonce.getPhotopr().availble dans le paramètre longueur ça marche aussi.
    Pour comprendre mon appli, c'est simple je récupère un formulaire à partir d'un jsp en le mettant dans un objet en l'occurence "annonce", je passe par un service et enfin l'étape de la persistance avec preparedStatement

    Merci pour toute réponse

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Salut tout le monde !
    Je galère !!! personne n'a pu m'aider !!
    preparedStatement enregistre une seule photo.
    Je veux sauvegarder 3 photos !!

    aider moi !!!!!

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Tu en es où avec ton problème ?

    J'ai fait un test de mon côté, il y a effectivement un problème avec un enregistrement qui aurait plusieurs BLOBs (ce qui ne me parait pas très bon du reste).
    Le problème vient d'un paramètre système de MySQL.
    Dans le fichier my.ini, il faut rajouter max_allowed_packet=la_taille_max_qu'il_faut
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. enregistrer la carte en une seule image en code
    Par nl20121974 dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 15/05/2013, 11h55
  2. Réponses: 2
    Dernier message: 29/03/2006, 16h36
  3. plusieurs enregistrements dans une seul ligne
    Par Celelibi dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/01/2005, 15h55
  4. Insérer plusieurs enregistrements en une seule requête
    Par pyd001 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/02/2004, 10h38

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