[SOLVED] date MySQL

1
0
-1

Bonjour,
J'ai :

  • une variable de processus nommée dateInscription de type date et qui a une valeur par défaut Now() et le format d'affichage (exp:25-12-09 12:50)

  • dans le formulaire, un champ de type date nommé dd et prend la valeur du variable dateInscription

  • dans la base de données, un champ de type datetime nommé Date_Inscription

Et vu que les formats de dates de Bonita et MySQL ne sont pas compatibles, alors j'ai essayé décrire un bout de code java et j'ai fait comme suit :
au niveau du connecteur , j'ai cliqué sur (Switch editor to create a condition ) ensuite j'ai cliquer sur le crayon pour taper le code (click on the pencil to edit the script) alors j'ai tapé le code ci-dessous;
en effet j'ai trouvé un bout de code sur Internet et j'ai essayé d'utiliser mes propres variables mais ça n'a pas marché,
prière de m'indiquer où ce situe l'erreur (j'ai un doute que j'ai pas mis mes variables dans le code correctement ou c'est une erreur de syntaxe :manque d’apostrophe ou quelque chose)
Prière de corriger ce bout de code en utilisant ** les variables convenables que j'ai déjà décrit au dessus** car j'ai essayé pas mal de fois mais pas de résultat.
Merci par avance.

import java.text.SimpleDateFormat;
SimpleDateFormat formatter = NEW SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateInscription = formatter.format(dd);
RETURN "INSERT INTO patient valide.inscription ( Date_Inscription, Cas_urgence, N°CIN) VALUES ('"+dateInscription +"', '"+casUrgence+"','"+ncin+"')";

Comments

Submitted by yannick.lombardi on Mon, 08/31/2015 - 11:08

Bonjour,
Quelle erreur avez vous dans les logs de Bonita ?
Le code me semble correct, c'est exactement le même que j'utilise dans mes processus. Par contre la requête SQL me parait étrange. C'est dans la table "patient" qu'est fait le INSERT ? Que représente le "valide.inscription" après le nom de la table ?

Submitted by ghada45 on Mon, 08/31/2015 - 11:38

Bonjour Yannick,
Honnêtement j'ai pas regardé aux logs de Bonita parce qu’il y a trop d'informations et je ne sais pas où je peux trouver l'erreur exactement au niveau de logs, en tout cas je vais l'essayer.
NB:"patient valide" c'est le nom de la base de données et "inscription" c'est le nom de la table où je veux faire l'insertion.

Submitted by Sean McP on Tue, 09/01/2015 - 12:33

Salut,

comme je l'ai indiqué dans le code ci-dessus. Il est facile d'écrire dans le journal et de voir ce qui se passe.

Le journal est accessible depuis la barre d'aide en studio, ou directement à partir de

bonitaRoot \ workspace \ tomcat \ logs

fichier ouvert Bonita * .log

salutations

Submitted by yannick.lombardi on Tue, 09/01/2015 - 13:50

Je n'ai jamais testé de mettre un espace dans le nom d'une base de données, je ne suis pas certain que cela soit supporté. Je pense que l'erreur vient de là.

Je testerais bien avec ce code :
import java.text.SimpleDateFormat;
SimpleDateFormat formatter = NEW SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateInscription = formatter.format(dd);
RETURN "INSERT INTO inscription ( Date_Inscription, Cas_urgence, N°CIN) VALUES ('"+dateInscription +"', '"+casUrgence+"','"+ncin+"')";

Normalement il n'y a pas besoin de préciser le nom de la base de donnée puisqu'il doit être indiqué dans l'url de connexion.

2 answers

1
+1
-1
This one is the BEST answer!

Bonsoir,
Merci à tous pour les réponses.
Enfin j'ai résolu mon problème, c'était des erreurs de syntaxe (les mots 'new' et 'return' doivent être écrits toujours en minuscule ) en plus, comme indiqué au niveau du code ci-dessous;
'dateInscri' est une nouvelle variable déclarée au niveau du code afin de prendre le nouveau format du date comme résultat et pour l'utiliser au niveau de return (la requête INSERT INTO)
et au niveau 'formatter.format()' il faut mettre la variable principale du processus 'dateInscription'
c'est à dire la variable déclarée dés le début au niveau du processus de type date.

le code correct:
import java.text.SimpleDateFormat;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateInscri = formatter.format(dateInscription);
return "INSERT INTO patient valide.inscription (Date_Inscription, Cas_urgence, N°CIN) VALUES ('"+dateInscri +"', '"+casUrgence+"','"+ncin+"')";

1
0
-1

What I do in these cases is add debugger code and then analyze what comes out...

try this:

import java.text.SimpleDateFormat;
import java.util.logging.Logger;

Logger logger= Logger.getLogger("org.bonitasoft");
Boolean debug = true;  // make false when not debugging
String myConnectorname = "MyConnectorName";
if(debug){logger.severe(myConnectorName + " Debug Start");}

SimpleDateFormat formatter = NEW SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateInscription = formatter.format(dd);
String sqlString = "INSERT INTO patient valide.inscription ( Date_Inscription, Cas_urgence, N°CIN) VALUES ('"+dateInscription +"', '"+casUrgence+"','"+ncin+"')";

if(debug){logger.severe(myConnectorName + " sqlString = " + sqlString);}

if(debug){logger.severe(myConnectorName + " Debug End");}
RETURN sqlString;

Then when you execute it - you will get the debug messages in the Bonitasoft logs, which you can then verify as right/wrong.

The above will give you the exact sql being executed which you can then copy to the mySQL clinet and try it direct...and be able to see the problem.

However I have to ask, do you really have a column called N°CIN are you sure the ° is correct?

regards

Notifications