Requête paramétrées

Salut

Puis je faire une requête paraétrée et mettre une variable ds le paramètre ?
J'arrive à faire la requête mais j'arrive pas à mettre la variable .
pour le paramèter fixe, je fais:

pst.steString(index du parametre, "String") et je voudrais que "String" soit remplacé par une variable.

Merci de me faire part de vos idée.

Soos.

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    quel language bitte ???????????????????????????????,,,

    Chouba
    "Obsédé des travaux manuels non pratiquant"
    1. Java
      1. regarde dans la doc du coté des PreparedStatement.
        Je ne me souviens plus de la syntaxe exacte mais le principe grosso modo c'est de preparer ta requete sql et aux endroits où tu veux mettre une variable, tu mets un point d'interrogation. ensuite tu dis pour chaque ? quelle variable tu veux mettre.

        N'hesite pas à me redemander si tu as des pbs ou si tu ne comprends pas bien la syntavxe dans la javadoc.

        Kevin
      2. @kevinKevin,
        j'ai fais cela mais mes variables ne sont pas prises en compte. Quand je mets le nom de la variable, c'est considéré coe un string et je ne sais pas quoi faire.

        Merci à toi
    2. Modérateur
      crée dans ta classe une méthode getMaVariable() qui te renvoie la variable en question

      et pis tu fais

      pst.steString(index du parametre, getMaVariable())

      ou alors donne nous un peu + d'indices

      Chouba
      "Obsédé des travaux manuels non pratiquant"
      1. vomment créer la fonction ds une classe différente de celle d la requete et la rappeler ds celle de la requete en temps voulu.

        je te joins le code

        PreparedStatement pst = conn.prepareStatement(

        "SELECT g.nom_gene, g.type, p1.debut, p1.fin, p1.brin "
        + " FROM genes g, position p1"
        + " WHERE g.id_position = p1.id_position "
        + " AND p1.debut > ? "
        + " AND p1.fin < ? "
        + " AND g.type = ? "

        + " UNION SELECT sn.nom_snps,sn.type,p2.debut, p2.fin, p2.brin "
        + " FROM snps sn, position p2 "
        + " WHERE p2.id_position=sn.id_position "
        + " AND p2.debut > ? "
        + " AND p2.fin < ? "
        + " AND sn.type = ? "

        pst.setInt(1,0);
        pst.setInt(2,50000);
        pst.setString(3,MaVariable);

        P.S Sachant que la fonction qui récupère dans une variable ne peut pas être là.

        Si tu as besoin de plus d'infos je suis à ta dispo

        Soos
        1. pourquoi tu fais un pst.setString(3,MaVariable) et pas un pst.setInt(3,MaVariable) ?
          Sinon c'est normail qu'il te caste implicitement ta variable en String. Enfin il me semble...
          De quel type est la variable MaVariable?

          A+

          kevin
      2. Modérateur
        Ben c'est la toute la force de Java

        en fait, la classe (classe1)qui prépare le statement doit avoir une référence vers la classe(classe2) qui contient ta variable. Par exemple en mettant cette dernière en attribut. Que tu peux mettre en argument du constructeur de la classe2 par ex.
        à ce moment la classe1 peut appeler les méthodes de la classe2 à condition qu'elles soient publiques.

        Chouba
        "Obsédé des travaux manuels non pratiquant"