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 :

L'application plante selon la valeur de la date passé en paramètre


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Par défaut L'application plante selon la valeur de la date passé en paramètre
    Bonjour à tous,

    Voila mon application crée et exécute une procédure qui selon la date passé paramètre effectue un update. Lors que la date ne répond pas à la condition, la procédure s'exécute normalement et je peux récupérer le message mais lors que la date est correct l'application gèle... L'erreur vient de l'update mais je la trouve pas... je devrais dire je la comprends pas^^

    Si vous trouvez le problème se serait super
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    try	{
    	//création de la procédure si nécessaire.
    	requete_sql = "create or replace procedure SP_TAXER\n" +
    			"(\n" +
    			"DATE_DEB IN OUT varchar\n" +
    			")\n" +
    			"is\n" +
    			"DATE_ERR exception;\n" +
    			"begin\n" +
    			"if (DATE_DEB >= add_months(sysdate,-1))then\n" +
    					"update CONTRAT\n" +
    					"set MNT_TPS_CO = MNT_CONTRAT_CO * 0.05,\n" +
    					"MNT_TVQ_CO = MNT_CONTRAT_CO * 0.075\n" +
    					"where DATE_CONTRAT >= to_date(DATE_DEB, 'DD/MM/YY');\n" +
    					"DATE_DEB :='Les contrats après le ' || DATE_DEB || ' ont été taxés.';\n" +
    			"else\n" +
    					"raise DATE_ERR;\n" +
    			"end if;\n" +
    			"exception when DATE_ERR then\n" +
    					"DATE_DEB :='La date doit être supérieure à la date du jour -1 mois.';\n" +
    			"end;";
     
    	stmt.executeUpdate(requete_sql);				
    	//appel de la procédure
    	requete_sql = "{call SP_TAXER (?)}";
    	CallableStatement call = connexion.prepareCall(requete_sql);
    	//on passe en paramétre la date
    	call.setString(1, stringDate);
    	//on defini le parametre en tant que paramètre OUT
    	call.registerOutParameter(1, Types.VARCHAR);
    	call.execute();
    	//récupération des ResultSet
     resultatsTextArea.setText(call.getString(1));							    			    
    }
    catch(Exception ex){
    	//On vérifie la présence du message anglais de login invalide.
    	if (ex.getMessage().indexOf("invalid username/password")>0) {
    		resultatsTextArea.setText("La combinaison mot de passe usager est invalide \n");
    	}
    	else {
    		resultatsTextArea.setText(ex.getMessage() + "\n");
    	}
    }
    J'ai également essayé avec le where suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "where DATE_CONTRAT >= DATE_DEB;\n" +
    Merci d'avance.
    AD

  2. #2
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 91
    Par défaut
    Bah en fait c'est bizarre déja tu déclare une date en varchar ensuite tu l'utilise comme une date pour la comparer à la sysdate -1 mois. Bref reprend le cours tu as pas très bien compris l'utilisation de la date.
    2) Ensuite je ne vois pas pourquoi tu l'utilises en tant que paramètre in out tu pourrais très bien le mettre en in seulement.

    3) tu remplace la date déclarée par ta string de sortie ce qui est je le pense une erreur. Essaie plutôt de lever une erreur c'est plus facile.

    4) si je comprend bien le sujet la tvq est de 7.5% du montant_initial +mnt_tps

    5) ne fais pas comme le prof pour traiter les exception java utilise la méthode getErrorCode() de la SQlException parce que la c'est vraiment pas beau.

    Bonne remise de TP

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Par défaut
    Lol, et salut...

    Je viens de rendre mon TP^^.
    J'ai fait avec un in pour simplifier mais j'avais les mêmes problèmes. Je finis par me rendre compte que le problème ne venait pas de mon code. Je dois avoir 2 programme qui rentrent en conflit ou je ne sais quoi car avant de rendre j'ai refait quelques tests et ça fonctionnait, suite à ton poste je viens de refaire le test avec mon ancien code et bing ça fonctionne...

    L'utilisation d'un varchar n'est pas un problème si on fait la vérification du format de la chaine avant et ça permettait de faire le out...

    Je viens de check l'énoncé et effectivement j'ai fait une erreur, si j'ai bien compris l'énoncé tu t'es trompé dans ton exemple too c'est la TPS = MNT_CONTRAT_CO * 5% + TVQ

    Merci pour les informations sur le getErrorCode() de SQLException mais j'ai pas envie de repasser trop de temps dessus now mais j'en prends bonne note pour plus tard

    Encore merci, bonne remise également et bonne fin de session ^^
    Bye

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/03/2014, 22h54
  2. Réponses: 20
    Dernier message: 25/09/2013, 13h24
  3. Réponses: 8
    Dernier message: 22/03/2006, 18h16
  4. Ne pas afficher une ligne selon une valeur
    Par uloaccess dans le forum Access
    Réponses: 3
    Dernier message: 18/11/2005, 15h04
  5. Trier un std::map selon les valeurs plutot que les clés
    Par dj.motte dans le forum SL & STL
    Réponses: 2
    Dernier message: 13/11/2004, 22h54

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