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

Langage SQL Discussion :

Pb de mise à jour d'une var numéric à partir saisi zone text


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 55
    Points : 42
    Points
    42
    Par défaut Pb de mise à jour d'une var numéric à partir saisi zone text
    Bonjour,
    j'essaie de mettre à jour la colonne price avec l'action suivante et j'ai le message suivant: operator numeric + character varying doesn't exist.
    En fait, la colonne price est déclaré en numéric ( au passage comment changer le type d'une vraiable sous adminIII?)
    Hors je récupère le prix à partir d'une zone texte.
    1°)Pouvez vous m'expliquer pourquoi ça ne marche pas?
    2°)Comment faire pour que çà passe en gardant la déf du prix en tant que numeric?
    3°)D'autre part, quand je code en dur, le prix qui est de 70 par ex, si je renseigne 5, le prix passe à 75 ( c dû à quoi?)
    MErci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (priceUpdateStmt == null)
                priceUpdateStmt = conn.prepareStatement(priceUpdate);
     
             priceUpdateStmt.setString(1, priceChange.getText());
             priceUpdateStmt.setString(2, publisher);
             int r = priceUpdateStmt.executeUpdate();
             result.setText(r + " records updated.");   
     
    private static final String priceUpdate =
          "UPDATE Books " + "SET Price = Price + ? " +
          " WHERE Books.Publisher_Id = (SELECT Publisher_Id FROM Publishers WHERE Name = ?)";

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    2°)Comment faire pour que çà passe en gardant la déf du prix en tant que numeric?
    Le problème peut être dû au fait que le caractère "?" retourne un String alors que ta requête attends un type numérique : cf la fonction setString à remplacer par setInteger (si celle-ci existe )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    priceUpdateStmt.setString(1, priceChange.getText());
    3°)D'autre part, quand je code en dur, le prix qui est de 70 par ex, si je renseigne 5, le prix passe à 75 ( c dû à quoi?)
    Quant tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...SET Price = Price + ? WHERE...
    chaque ligne concernée par cette requête UPDATE incrémentes la valeur de l'attribut Price de la valeur saisie (car si je comprends bien "?" sert à fournir un paramètre d'entrée de ta requête SQL).

    Conclusion : si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...SET Price = ? WHERE...
    alors la valeur saisie se substituera à celle existante au lieu de s'y ajouter. Donc si par exemple le prix existant est de 70 et que tu saisis 5 alors le prix après commit sera à 5.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 55
    Points : 42
    Points
    42
    Par défaut
    oui merci, j'avais trouvé en fait
    un set setdouble et un petit doubleParse sur le string et tout est ok
    Merci

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

Discussions similaires

  1. Mise à jour d'une table .fic à partir d'une requete access
    Par hobbes34 dans le forum HyperFileSQL
    Réponses: 3
    Dernier message: 25/02/2013, 10h22
  2. Réponses: 0
    Dernier message: 15/02/2013, 01h17
  3. [Débutant] Mise à jour d'une base SQlite à partir d'un DGV
    Par Triton972 dans le forum Entity Framework
    Réponses: 10
    Dernier message: 28/01/2013, 21h56
  4. Réponses: 4
    Dernier message: 25/05/2011, 18h08
  5. Mise à jour d'une liste déroulante à partir d'un textbox
    Par toonado dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/10/2007, 16h35

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