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 :

ordre important quand on construit une requête ?!


Sujet :

JDBC Java

  1. #1
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut ordre important quand on construit une requête ?!
    Bonjour à tous,

    j'ai un problème qui me paraît idiot, mais je n'arrive pas à comprendre : j'espère qu'un avis extérieur m'aidera

    J'ai une requête que j'exécute, jusque là ok. Le code suivant marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                builderRequest
                        .append("WHERE c.`id_bank` = b.`id_bank` AND c.`id_site` = s.`id_site` ");
                builderRequest
                        .append("AND (s.`path` REGEXP ? OR s.`id_site` = ?)");
     
                preparedStatement = this.connection.prepareStatement(builderRequest
                        .toString());
                preparedStatement.setString(1, "(^|;)" + idSite + "($|;)");
                preparedStatement.setString(2, idSite);
                resultSet = preparedStatement.executeQuery();
    Le code suivant ne marchait pas (j'avais commencé par ça parce que la requête était à l'origine tournée comme ça):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                builderRequest
                        .append("WHERE (s.`path` REGEXP ? OR s.`id_site` = ?) ");
                builderRequest
                        .append("AND c.`id_bank` = b.`id_bank` AND c.`id_site` = s.`id_site`");
     
                preparedStatement = this.connection.prepareStatement(builderRequest
                        .toString());
                preparedStatement.setString(1, "(^|;)" + idSite + "($|;)");
                preparedStatement.setString(2, idSite);
                resultSet = preparedStatement.executeQuery();
    Les seules différences sont dans la construction de la requête SQL, les dernières lignes sont identiques...

    Avec ce second code, j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Failed to prepare statement :  java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
    Alors que le premier passe bien !

    Or j'ai bien des "?"... alors soit il y a un truc que je n'ai pas vu dans ma seconde requête qui fait que c'est différent, soit il y a quelque chose que je n'ai pas compris ? J'ai du mal à croire qu'on soit obligé d'avoir les "?" dans le dernier "append"

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    ca ne devrais pas jouer. Es-tu sur que c'est ce que tu a fait? Affiche la requête lors de l'erreur.

  3. #3
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Mmmh, j'étais sûr de moi, mais je viens de regarder encore une fois le premier test que j'avais fait, et en fait, il y avait une énorme boulette pas facile à voir au premier coup d'oeil... un ` oublié

    Merci de m'avoir confirmé que ça ne devait pas jouer et désolé du dérangement !


    Edit: pour info, j'avais écrit ça sur la ligne d'avant... shame on me

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    builderRequest.append("FROM `contract` as c, `bank` as b, site` as s ");

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/08/2018, 19h52
  2. [AC-2000] Ajouter un item dans un listbox, quand connecté sur une requête
    Par amerex dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/06/2012, 09h32
  3. importer feuille excel avec une requête sql
    Par rochna dans le forum VB.NET
    Réponses: 2
    Dernier message: 01/09/2010, 13h10
  4. importer feuiller excel avec une requête sql
    Par rochna dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 31/08/2010, 14h38

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