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 :

Traitement par lot


Sujet :

JDBC Java

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut Traitement par lot
    Bonjour,

    Je voudrais ajouter +1 à toutes les lignes de ma table.
    Ma table nombre contient une seul colonne nb dont le type est un int.

    Je fais donc un traitement par lot. Mais le problème c'est que je ne sais pas comment récupérer le nombre de ligne de ma table et comment récupérer la valeur d'une ligne.

    Quand je fais int r = rsmt.getColumnCount(); cela me renvoie une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
    	    String sql ="INSERT INTO nombre WorkCdms (nb) values (?)" ;
    	    PreparedStatement ps=(PreparedStatement) connection.prepareStatement(sql);
    	    ResultSetMetaData rsmt = ps.getMetaData();
    	    int r = rsmt.getColumnCount();
    	    System.out.println(r);
    	    for (int i=0; i<=r;i++) {
    	        //ps.setInt(i, + );;
    	        ps.addBatch();
    	    }
    	    ps.executeBatch();

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    rsmt.getColumnCount() : cela sert à connaitre le nombre de colonnes, pas le nombre de lignes.
    Et cela ne fonctionne que sur une requête de type "SELECT ..."
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    ok, j'ai fait dans un premier temps la requête suivante : "SELECT COUNT(*) FROM nombre;" pour récupérer le nombre de ligne.
    Comment puis-je récupérer la valeur sur une ligne ? J'ai essayé de faire ca :
    SELECT * FROM `nombre` WHERE rownum=1
    j'obtiens cette erreur :
    SELECT * FROM `nombre` WHERE rownum=1
    LIMIT 0, 25

    MySQL a répondu:
    #1054 - Unknown column 'rownum' in 'where clause'

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    La bonne requête :
    "SELECT COUNT(*) As NbLignes FROM nombre;"

    et dans le Resultset :
    rs.getInt("NbLignes")
    te donneras le nombre de lignes

    Mais je ne comprends pas très bien ce que tu cherches à faire ...
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Moi non plus je ne sais pas ce que tu essayes de faire avec tes select. Mais, juste pour information, si le but est d'incrémenter un nombre sur toutes les lignes, un simple update SQL suffit (un truc dans le genre update nombre set nb=nb+1) et tu auras un traitement global. Si le but est de le faire par lot, donc ne pas traiter tout d'un coup, tu ajoutes la clause LIMIT offset, rowcount. Comme la méthode executeUpdate() de Statement te retourne le nombre de lignes modifiées, tu peux appeler successivement l'update avec limite, en incrémentant l'offset de la taille de page, et ce, tant que executeUpdate te retourne quelque chose supérieur à 0.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    ok merci de vos aides

Discussions similaires

  1. Traitement par lot pour rajouter un copyright.
    Par Tristan_C dans le forum Imagerie
    Réponses: 3
    Dernier message: 11/10/2008, 13h04
  2. [Data] Traitement par lot
    Par titeuf92 dans le forum Spring
    Réponses: 1
    Dernier message: 25/03/2008, 11h51
  3. Réponses: 6
    Dernier message: 31/01/2008, 06h34
  4. Utiliser Log4J comme sortie d'un traitement par lots.
    Par Pierre8r dans le forum Logging
    Réponses: 1
    Dernier message: 24/11/2007, 11h34
  5. [FTP] Traitement par lot
    Par gandalf76fr dans le forum Langage
    Réponses: 5
    Dernier message: 06/11/2007, 23h04

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