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 :

[JDBC] Statement ou PrepareStatement


Sujet :

JDBC Java

  1. #1
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut [JDBC] Statement ou PrepareStatement
    Bonjour,

    Alors voilà, j'ai un soucis

    je veux faire une insertion multiple en base, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT table1 (col1, col2) VALUES ('val1', 'val'2');
    INSERT table2 (col3, col4) VALUES ('tutu', 'cool');
    voilà, ça c'est l'exemple simple.
    Donc mon problème, c'est que j'aimerais jouer ces 2 requêtes en même temps.

    J'ai bien la solution porcho de concaténer les 2 requêtes dans un String et créer un Statement simple avec ce String. Ca marche, c'est pas mal.

    Mais le hic, c'est que je fais mes tests avec des caractères simples pour l'instant, pas de guillemet.

    Donc je me suis dis, fais PreparedStatement, mais est-ce que le PreparedStatement va aimer ce genre de requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT table1 (col1, col2) VALUES (?, ?);
    INSERT table2 (col3, col4) VALUES (?, ?);
    si oui, bah il ne me reste plus qu'à collecter les informations dans le bon ordre pour lui donner a bouffer...mais bon, sachant que je construit les différentes requêtes à imbriquer de manière dynamique, c'est pas forcément le plus simple pour conserver l'ordre des paramètres.

    Sinon j'ai vu l'histoire des batchs, mais il semblerait qu'avec la base H2 et les PreparedStatement, ça ne fonctionne pas.

    Bon sinon finalement ma question c'est, est-ce que je peux faire qq chose comme ça :
    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
     
    PreparedStatement prep = null;
    connection.setAutoCommit(false);
     
    //première requête générée dynamiquement
    String ma_premiere_query = ...;
    prep = connection.prepareStatement(ma_premiere_query);
    prep.setInt(1, ...);
    ...
    prep.execute();
     
    //deuxième requête générée dynamiquement
    String ma_deuxieme_query = ...;
    prep = connection.prepareStatement(ma_deuxieme_query);
    prep.setInt(1, ...);
    ...
    prep.execute();
     
    connection.commit();
    connection.setAutoCommit(true);
    est-ce que ça, c'est jouable et moins porcho que la première solution, (vu que ça gère les accents surtout) ?

    (je sais que je pourrais tester, mais ça permet de créer une discussion sur le sujet si la solution envisagée n'est pas possible )
    Hum hum hum...géant vert ! ! !
    Le meilleur moyen de trouver c encore de chercher ! ! !

  2. #2
    Membre régulier Avatar de VinceFromBcn
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 122
    Points
    122
    Par défaut
    Bonjour,

    Avec les méthodes addBatch() et executeBatch(), tu devrais pouvoir réaliser cela non ?

    A+

Discussions similaires

  1. JPA extraire une source jdbc pour creer un statement
    Par seddik_saber dans le forum JPA
    Réponses: 0
    Dernier message: 12/11/2008, 18h48
  2. Prepare Statement jdbc
    Par punisher999 dans le forum JDBC
    Réponses: 18
    Dernier message: 19/09/2008, 16h41
  3. [JDBC][STATEMENT] NullPointerException
    Par syvid dans le forum JDBC
    Réponses: 2
    Dernier message: 23/03/2005, 00h29
  4. [JDBC] java.sql.SQLException: Closed Statement
    Par cmoulin dans le forum JDBC
    Réponses: 4
    Dernier message: 03/09/2004, 17h22
  5. Réponses: 15
    Dernier message: 20/07/2004, 09h09

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