Bonjour,
J'exécute une requête du type :
Cette requête, exécuté dans SqlDevelopper et dans SqlPlus, renvoie la date en format français.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 "Select " + " DATE " + "from table " + "where {ma_condition} "
Si je l'exécute dans ma servlet, voire même dans un code de test, la date m'est renvoyée en américain.
Voici le code utilisé pour ouvrir ma connexion Oracle de type thin via jdbc :
Comme vous le voyez, j'ai essayé ci-dessus de forcer le format de la date, sans succès.
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 private static String MaBase= "(DESCRIPTION=" + "(ADDRESS = (PROTOCOL = TCP)(HOST = serveur1 )(PORT = 1521)) " + "(ADDRESS = (PROTOCOL = TCP)(HOST = serveur2 )(PORT = 1521)) " + "(LOAD_BALANCE = yes)(FAILOVER = yes)(CONNECT_DATA =(SERVICE_NAME = MABASE)(FAILOVER_MODE =(TYPE = SELECT)" + "(METHOD = BASIC)(RETRIES = 300)(DELAY = 2))))"; private static String url = "jdbc:oracle:thin:@" + MaBase; // + ";InitializationString=ALTER SESSION SET NLS_DATE_FORMAT='DD/MM/YYYY'"; private static String util = "utilisateur"; private static String mdp = "motdepasse"; static { try { Class.forName("oracle.jdbc.driver.OracleDriver"); try { DriverManager.registerDriver(new OracleDriver()); connexion = DriverManager.getConnection(url,util,mdp); //connexion = DriverManager.getConnection(url, util, mdp); PreparedStatement ps = connexion.prepareStatement("alter session set NLS_DATE_FORMAT = 'DD/MM/YYYY'"); ps.execute(); ps.close();
Je récupère le code comme étant une date :
Enfin voici le code qui me permet de tester :
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 public List<Objet> listeObjets() { List<Objet> objets = new ArrayList<Objet>(); Connection conn = SingletonConnection.getConnexion(); try { PreparedStatement ps = conn.prepareStatement ("Select " + " DATE " + "from table " + "where {ma_condition} "; ResultSet rs = ps.executeQuery(); while (rs.next()) { Objet objet = new Objet(); objet.setDate(rs.getDate("DATE")); ... objets.add(objet); } ps.close();
Qu'est ce qui peut expliquer cette différence entre SqlDevelopper/SqlPlus et mon application JEE ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public static void main(String[] args) { IObjetsMetier metier = new ImplObjetsMetier(); List<Objet> objets = metier.listeObjets(); for (Objet o : objets) { System.out.println(o.getDate()); } }
Merci.
Partager