yness91
Messages postés26Date d'inscriptionvendredi 12 mars 2010StatutMembreDernière intervention27 mars 2011
-
18 mars 2010 à 17:51
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
19 mars 2010 à 21:38
Bonsoir tout le monde,
J'ai besoin de votre aider pour résoudre un problème.
Je développe un application en java, et j'ai besoin de convertir une chaine de caractère à une variable de type date pour l'insérer dans ma base de données oracle 10g XE.
Pour ceux j'ai écrit cette méthode :
public static Date stringToDate(String sDate, String sFormat) throws Exception {
Date d;
SimpleDateFormat sdf = new SimpleDateFormat(sFormat);
d= sdf.parse(sDate);
return d;
J'ai essayé de tester sa au niveau du main avec ces lignes
connexion c =new connexion(); // c'est la classe qui contient la méthode stringtodate
c.stringToDate(d,"dd/MM/yyyy");
System.out.println(dt.toString());
J'ai comme affichage : Mon Feb 23 00:00:00 CET 1987
Alors que ce n'est pas le format que je souhaite ("dd/MM/yyyy")...
Quelqu'un a une idée sur comment je peux résoudre sa ???
Et merci d'avance :)
A voir également:
Ora-01858: caractère non numérique trouvé à la place d'un caractère numérique
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 18 mars 2010 à 18:29
Salut,
Normal : tu récupère une instance de la classe Date, mais la fonction toString de la classe Date te formatte la date pour avoir un format lisible, et non selon le format que tu veux toi.
Il te faut réutiliser un DateFormat pour convertir ta date en String pour avoir le format voulu :
String dateNonFormattee = "...";
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date date = format.parse(dateNonFormattee);
System.out.println(format.format(date));
Quel intérêt de faire une fonction qui prend 4 lignes de codes alors que l'utilisation directe d'un simpledateformat ne prend qu'une seule ligne de code ?
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
yness91
Messages postés26Date d'inscriptionvendredi 12 mars 2010StatutMembreDernière intervention27 mars 2011 19 mars 2010 à 21:34
Salut je voudrais bien te demander une autre petite question... Maintenant que j'ai convertit la chaine de caractère en une date et je l'ai mi au format que je désire, est ce que Oracle reconnait le type date de java? car sa m'a générer une exception lors de son insertion...
Exception in thread "main" java.sql.SQLException: ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique
Pour plus de détail je te montre le code de la méthode :
public void insert () throws SQLException, ParseException, Exception
{
String prenom= "7amma";
String nom ="jebari";
int cin= 6666;
String d ="23/02/1987";
Date dt= stringToDate(d);//méthode de convertissage de string à date
getconnexion(); //méthode de cx à la bd
stmt =conn.createStatement();
stmt.executeUpdate("INSERT INTO professeurs (prenom,nom,cin,date_de_naissance) VALUES ('" + prenom + "','" + nom + "','" + cin + "', "+ dt +" ) ");
stmt.close();
conn.close();
}
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 19 mars 2010 à 21:38
Salut,
Ce n'est pas oracle qui ne reconnait pas la date, mais la fonction SQL : la fonction SQL nécessite une date formatée, si tu lui
passes le toString de l'objet date (comme tu le fais ici), forcément, ca ne marche pas.
Donc :
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); // Je te laisse trouver le format reconnu par le langage SQL d'Oracle
stmt.executeUpdate("INSERT INTO professeurs (prenom,nom,cin,date_de_naissance) VALUES ('" + prenom + "','" + nom + "','" + cin + "', "+ format.format(dt) +" ) ");
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement