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

avec Java Discussion :

Récupérer informations d'une base de donnée et l'insérer dans une variable


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 17
    Par défaut Récupérer informations d'une base de donnée et l'insérer dans une variable
    Bonjour à toutes et à tous,

    J'avais, il a de cela une semaine et demi, posté un message sur le forum pour me connecter à une base de donnée SQL Server. Désormais la connexion fonctionne et j'arrive à imprimer dans la console toutes les informations désirées.

    Toutefois, je suis confronté à un autre problème. Je souhaiterais récupérer ces informations ( nombre de pièces utilisées, Poste de travail, Référence des pièces et produits ... ) pour les incrémenter dans une variable.
    Problème: Je ne parviens pas à trouver des informations sur le web concernant cette manipulation (que ce soit en Java ou dans la requête SQL utilisée en Java) afin de les incrémenter dans une variable, traité dans un autre programme JAVA. (elles doivent être lu sur un écran de tablette Android(ce n'est pas ma part du travail de créer l'intérface)).

    Je vous sollicite, car je n'ai même pas une bribe de programme, je ne vois pas du tout par quoi commencer.

    Merci d'avance de l'aide que vous pourrez m'apporter,

    PS : au risque de l'avoir posté sur une mauvaise rubrique du forum, je m'en excuse d'ors et déjà.


    Bonne journée,
    Crazy-Frog-67

  2. #2
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    Tu te connectes avec JDBC

    Tu fais un select en sql via l'api JDBC

    Tu injectes le résultat dans ta variable

    Tu incrémentes ce résultat.

    Tu fais un update en sql via l'api JDBC en utilisant la valeur de ta variable

    Tu fermes la connexion


    Le sql à utiliser est tout à fait standard.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 17
    Par défaut
    Bonjour,

    Merci de ta réponse,

    Pour ce qui est de la requête j'ai la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    st = conn.createStatement();
    rst = st.executeQuery("SELECT b.DOS, b.BH_ID, LIBSEQ, b.GAMSEQ, CENTRE, POSTE, b.PINO, b.FABTPS, REF, g.QTE FROM ERP211..BH as b, ERP211..BG as g "
    + " WHERE b.DOS = '998' AND POSTE LIKE 'RP-W%' AND MAX(PREVBLDT) ");
    Ma question du coup est : " Faut-il que j'injecte la valeur dans la variable directement dans la requête ? Ou cela doit se faire hors de celle-ci?" Je pose cette question car je suppose que l'update doit se faire en requête SQL.

  4. #4
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    Salut,

    Ton execute query va te retourner un objet resultset, tu dois ensuite manipuler ce resultset pour récupérer les valeurs retournées par la requête.
    Tu peux mettre ces valeurs dans des variables et ensuite les manipuler depuis ton code java.
    Une fois que les valeurs sont mises à jour, tu peux créer une requête update pour mettre à jour le contenu de ta base de donnée.

    Il ne faut pas oublier de fermer la connexion une fois le traitement terminé.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 17
    Par défaut
    Du coup j'ai pleins de questions:

    1) Pour fermer la connexion j'ai en fin de programme la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       rst.close();
    	      st.close();
    	    } catch (Exception e) {
    	      e.printStackTrace();
    Est-ce que cette dernière suffit à la fermeture de la connexion ?

    Ou préférera-t-on le code suivant :
    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
     
    catch (SQLException ex) {
        // exceptions
     finally {
        if (rst != null) {
            try {
                rst.close();
            } catch (SQLException e) { /* ignoré */}
        }
        if (st != null) {
            try {
                st.close();
            } catch (SQLException e) { /* ignoré */}
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) { /* ignoré */}
        }
    2) Question qui n'a rien à voir directement avec le post mais je souhaite récupérer la commande la plus récente. La commande "MAX(PREVBDLT)" me fait-elle remonter la commande la plus récente ?

  6. #6
    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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Salut,
    Citation Envoyé par Crazy-Frog_67 Voir le message
    Est-ce que cette dernière suffit à la fermeture de la connexion ?
    Oui. Tout ce qui a été créé à partir de la connexion sera fermé également.

    En revanche :

    1. Il est préférable d'utiliser un pool de connexions surtout s'il y a un accès multiple (multi utilisateur ou multi process). Cela limite la charge en ressource, y compris pour le SGBD.
      Donc de ne pas fermer une connexion après s'en être servie, mais de la rendre au pool.
    2. Il est préférable d'utiliser un try-with-resource pour simplifier le code, le rendre plus lisible.
    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.

  7. #7
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    Citation Envoyé par Crazy-Frog_67 Voir le message

    1) Pour fermer la connexion j'ai en fin de programme la commande suivante:
    C'est ta connexion que tu dois fermer, et elle fermera donc tout ce qui lui est rattaché.

    Et il vaut effectivement mieux fermer avec un try-with-resources.

    Citation Envoyé par Crazy-Frog_67 Voir le message

    2) Question qui n'a rien à voir directement avec le post mais je souhaite récupérer la commande la plus récente. La commande "MAX(PREVBDLT)" me fait-elle remonter la commande la plus récente ?
    Si PREVBDLT est une valeur représentant la date de la commande, oui

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/04/2016, 14h15
  2. Réponses: 5
    Dernier message: 13/06/2014, 14h14
  3. [OpenOffice][Base de données] Récupérer les données d'un fichier .txt et les insérer dans une base de données
    Par frack dans le forum OpenOffice & LibreOffice
    Réponses: 9
    Dernier message: 05/08/2009, 10h52
  4. Récupérer l'id d'un bouton radio et l'insérer dans une base de donnée
    Par narama87 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/04/2009, 13h18
  5. Réponses: 4
    Dernier message: 22/02/2007, 10h01

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