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 :

Problème requête SQL en Java


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 31
    Points
    31
    Par défaut Problème requête SQL en Java
    bonjour à tous,

    novice en Java je dois pourtant réaliser un petit travail dans le cadre de mon stage.
    je dois aller chercher dans la base de données différentes informations dont les sources par type de source (procédure, package...). j'arrive sans problème a faire ça sauf pour le critère de recherche spécifique, j'aimerai que l'utilisateur entre le type "à la main", et que l'entrée soit transformée automatiquement en majuscule (soit un bon vieux "upper" en sql). voila ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Statement s2 = connection.createStatement();
              		Scanner sct = new Scanner(System.in);
              		System.out.println("veuillez entrer le type de fichier SVP");
              		String reponse=sct.nextLine();
              		// code SQL:
              		ResultSet r2 = 
              				s2.executeQuery(
              						"SELECT DISTINCT NAME, TYPE,LINE,TEXT FROM ALL_SOURCE WHERE NAME LIKE 'XX%' ORDER BY name ASC, line ASC");
              		while(r2.next()) {
     
              			System.out.println(
              					r2.getString("name")+";"+ r2.getString("type")+";" + r2.getString("line")+";" + r2.getString("text"));
              		}
    j'ai essayé de mettre ma variable "reponse" à divers endroits, sans succès.

    quelqu'un a une solution SVP?

  2. #2
    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,

    Tout d'abord, pour mettre une chaîne en majuscules, en Java, c'est un peu près la même chose qu'en SQL : la méthode s'appelle toUpperCase().

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String input = "truc";
    String output = input.toUpperCase();
    System.out.println( output ) ;
    affiche
    TRUC
    Ensuite, il suffit d'ajouter un critère SQL à la requête : une clause dans le WHERE combinée avec un AND :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT NAME, TYPE,LINE,TEXT FROM ALL_SOURCE WHERE NAME LIKE 'XX%' AND TYPE = 'TRUC' ORDER BY name ASC, line ASC

    Tu pourrais procéder par concaténation, mais il y a mieux en Java : le PreparedStatement. Il est mieux parce qu'il te permet de paramétrer une requête, de te dispenser des spécificités des transformation de type (Java vers SQL), qui peuvent dépendre des différents SGBD, et, empêche, accessoirement l'injection SQL.

    Pour créer un PreparedStatement, il suffit d'appeler preparedStatement(sqlQuery), ou sqlQuery est la requête SQL avec des "?" à la place des éléments variables (les valeurs de paramètres). Ainsi, on aurait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PreparedStatement s2 = connection.prepareStatement("SELECT DISTINCT NAME, TYPE,LINE,TEXT FROM ALL_SOURCE WHERE NAME LIKE 'XX%' AND TYPE = ? ORDER BY name ASC, line ASC");
    Ensuite, il suffit de passer la valeur en paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s2 .setString(1, reponse.toUpperCase());
    (Le 1 est le numéro d'index du paramètre dans la requête, 1 pour le premier, 2 pour le second, s'il y'en a 2, etc.)

    Puis pour exécuter la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultSet r2 = s2.executeQuery();
    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.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    un grand merci pour ta réponse rapide. c'est exactement ce qu'il me fallait !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'exécution d'une requête sql sous java
    Par leshafid dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/08/2010, 09h15
  2. Problème d'exécution d'une requête sql sous java
    Par leshafid dans le forum JDBC
    Réponses: 1
    Dernier message: 18/08/2010, 08h26
  3. problème requête sql
    Par psychoBob dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2005, 17h50
  4. problème requête sql
    Par perfectdams dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/06/2005, 18h09
  5. Réponses: 8
    Dernier message: 23/10/2003, 16h22

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