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

Java Discussion :

Execution requete SQL en JAVA


Sujet :

Java

  1. #1
    Rédacteur

    Homme Profil pro
    Technical Lead Salesforce
    Inscrit en
    Février 2009
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technical Lead Salesforce

    Informations forums :
    Inscription : Février 2009
    Messages : 563
    Points : 1 667
    Points
    1 667
    Par défaut Execution requete SQL en JAVA
    Bonjour, je créé un petit programme en JAVA pour mes cours (je suis étudiant) avec une base de donnée SQL et je voudrais savoir ce que retourne une requête du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM user WHERE login = 'login' AND password = 'password';

    Sachant que login et/ou password ne sont pas corrects.

    Est-ce que ça retourne une erreur ou ça ne retourne rien?

    J'ai déjà effectué le test en ligne de commande directement et ça retourne un Empty set (0.00 sec).
    - Mes articles
    - Consultant technique Salesforce
    - Salesforce Certified Administrator
    - Salesforce Certified Platform App Builder
    - Salesforce Certified Developper I
    - Salesforce Certified Sales Cloud
    - Salesforce Certified Service Cloud

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Est-ce que ça retourne une erreur ou ça ne retourne rien?
    ça ne retourne un Empty set , par contre si tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultRequete.getString("login")
    sans faire un test, tu auras un erreur si la requête ne retourne aucun enregistrement.
    Testes avec un if ou dans une boucle while si la requête retourne plusieurs ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(resultRequete.next())
    {
      // la requete a trouve d'enregistrement
      System.out.println("Bonjour  "+resultRequete.getString("login"));
    }
    else
    {
       System.out.println("Login et/ou mot de passe incorrect");
    }

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    La JDBC devrait t'éclairer sur ces questions, avec des exemples de code (et en particulier l'utilisation des "PreparedStatement" très utiles pour les requêtes SQL).
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Rédacteur

    Homme Profil pro
    Technical Lead Salesforce
    Inscrit en
    Février 2009
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technical Lead Salesforce

    Informations forums :
    Inscription : Février 2009
    Messages : 563
    Points : 1 667
    Points
    1 667
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    ça ne retourne un Empty set , par contre si tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultRequete.getString("login")
    sans faire un test, tu auras un erreur si la requête ne retourne aucun enregistrement.
    Testes avec un if ou dans une boucle while si la requête retourne plusieurs ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(resultRequete.next())
    {
      // la requete a trouve d'enregistrement
      System.out.println("Bonjour  "+resultRequete.getString("login"));
    }
    else
    {
       System.out.println("Login et/ou mot de passe incorrect");
    }
    Je suis encore un débutant dans le java..

    Voilà l'execution de ma requête:

    String query = "SELECT * FROM Utilisateur WHERE login = '" + login + "' AND password = '" + password + "'";
    Statement state = null;
    ResultSet result = null;
    ResultSetMetaData resultMeta = null;
    state = con.createStatement();
    result = state.executeQuery(query);
    resultMeta = result.getMetaData();
    loginVerif = result.getObject(2).toString();
    passwordVerif = result.getObject(3).toString();
    result.close();
    state.close();
    J'avais pensé à exécuté ma requête qui d'après ce que j'ai pu comprendre retourne le résultat sous forme d'un tableau d'où l'utilisation des variables loginVerif et passwordVerif qui récupère le résultat des colonnes 2 et 3 (login et password) mais j'aurais voulu savoir comment faire si ça ne retourne rien.

    Donc d'après mon code et ce que tu as écris, je pourrais faire un truc du style:
    if (result.next())
    {
    system.out.println("Résultat trouvé");
    }else
    {
    system.out.println("Résultat non trouvé");
    }
    ?

    Je ne comprends généralement rien dans les API de Sun comme c'est écrit en anglais et que j'ai un peu de mal..
    - Mes articles
    - Consultant technique Salesforce
    - Salesforce Certified Administrator
    - Salesforce Certified Platform App Builder
    - Salesforce Certified Developper I
    - Salesforce Certified Sales Cloud
    - Salesforce Certified Service Cloud

  5. #5
    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
    Peux-tu poster ton programme? Avec ce que tu nous donnes il manque des choses.

    Il faut aller voir ce tuto
    http://java.developpez.com/faq/jdbc/

  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
    Le tuto s'impose...

    Pour la question initiale, l'exécution de la requête renvoie un ResultSet qui peut être vide si aucun enregistrement ne répond aux critères.
    Donc, si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ResultSet rs = stmt.executeQuery(".....");
    if (rs.next())
    {
       // au moins un enregistrement correspond aux critères...
    }
    else
    {
       // login / password non trouvé...
    }
    En passant, pour ce genre de requête d'authentification, il est fortement recommandé de passer par un PreparedStatement, ça évite (entre autre) les problèmes d'injection
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Rédacteur

    Homme Profil pro
    Technical Lead Salesforce
    Inscrit en
    Février 2009
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technical Lead Salesforce

    Informations forums :
    Inscription : Février 2009
    Messages : 563
    Points : 1 667
    Points
    1 667
    Par défaut
    Merci pour vos réponses, je pense que ça devrait fonctionner.

    J'ai bien dis je pense car j'ai un souci de connexion à ma BDD, mon driver est bien chargé car après son chargement, j'ai bien une fenêtre qui s'affiche comme quoi c'est bon mais après, j'ai un message d'erreur dans ma console (SQLException) comme quoi ce n'est pas bon et voici le message d'erreur:
    SQL erreur : SELECT * FROM Utilisateur WHERE login = 'test' AND password = 'test' Communications link failure

    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    Je suis sûr que ces données existent dans ma BDD puisque c'est moi qui les ai créé et mon login et mot de passe de conexion SQL aussi puisque je viens de les vérifier.

    D'où ça peut venir?

    Pour ce qui est du "PreparedStatement", ce n'est pas important comme je suis étudiant et ce n'est qu'un simple programme pour mon examen donc je préfère d'abord que ça fonctionne avant de penser à la sécurité.
    - Mes articles
    - Consultant technique Salesforce
    - Salesforce Certified Administrator
    - Salesforce Certified Platform App Builder
    - Salesforce Certified Developper I
    - Salesforce Certified Sales Cloud
    - Salesforce Certified Service Cloud

  8. #8
    Rédacteur

    Homme Profil pro
    Technical Lead Salesforce
    Inscrit en
    Février 2009
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technical Lead Salesforce

    Informations forums :
    Inscription : Février 2009
    Messages : 563
    Points : 1 667
    Points
    1 667
    Par défaut
    Je poste pour dire que j'ai trouvé ma réponse, j'avais un mauvais URL.
    - Mes articles
    - Consultant technique Salesforce
    - Salesforce Certified Administrator
    - Salesforce Certified Platform App Builder
    - Salesforce Certified Developper I
    - Salesforce Certified Sales Cloud
    - Salesforce Certified Service Cloud

Discussions similaires

  1. Problèmes executions requetes SQL
    Par Raideman dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/03/2008, 02h26
  2. execution requete sql caractère spéciaux
    Par label55 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/02/2008, 17h04
  3. appel de methodes et execution requete SQL
    Par oceane751 dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2008, 15h56
  4. Connection et requete sql avec java
    Par martos dans le forum NetBeans
    Réponses: 8
    Dernier message: 28/08/2007, 21h57
  5. [shell] Execution script sql et JAVA
    Par RR instinct dans le forum Langage
    Réponses: 7
    Dernier message: 26/09/2006, 11h08

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