-
[JDBC] inserer une date
Bonjour,
j'ai une date de la forme '01/06/2004' en format string.
qd je fais une requete par l'intermédaire d'un logiciel avec ; INSERT INTO maTable ('','truc','01/06/2004');
tout ce passe bien (ma bdd est oracle)
mais lorsque je fais la même chose avec JDBC, il me génére une exception;
--> SQLException updateQuery(): java.sql.SQLException: ORA-01830: date format picture ends before converting entire input string
pkoi dans un cas il le prend et pas dans l'autre???
merci
-
Je suppose que ta colonne est au format DATE oracle.
essai ça:
Code:
INSERT INTO maTable ('','truc',to_date('01/06/2004', 'DD/MM/YYYY'));
-
vi j'ai trouvé ca aussi,
ca marche tjs dans mon editeur sql, mais dès que je la lance avec JDBC, ca rame, mais il me génère pas d'erreurs!!!
et l'insertion ne se fait pas:
INSERT INTO TIG_ACTION VALUES ('GESF_04_4','201','1','0','99999999','A0004','null','fgsgdfgsdg','Q','null','0',TO_DATE('04/05/2004','DD/MM/YYYY'),TO_DATE('05/05/2004','DD/MM/YYYY'),'0');
-
envoie ton code stp... :roll:
-
//classe interface avec la BDD
public boolean updateQuery(String query) {
DBconnect();
try {
Statement st = con.createStatement();
int rs = st.executeUpdate(query);
}
catch(SQLException e1) {
System.out.println("--> SQLException updateQuery(): " + e1 +"in :\n"+query );
return false;
}
finally
{
DBdeconnect();
}
return true;
}
//classe de la requete
/**
* ajouter une action dans la table 'action'
* @return boolean
*/
public boolean addAction()
{
String query = "INSERT INTO TIG_ACTION" +
" VALUES ('"+lot.getCodeLot()+"','"+noOrdreLivrable+"','"+rangLivrable+"','"+pilote+"','"+
acteur+"','"+codeAction+"','"+titreAction+"','"+objetAction+"','"+origineAction+"','"+
sourceAction+"','"+etatAction+"',TO_DATE('"+dateDebutAction+"','DD/MM/YYYY'),TO_DATE('"+dateFinAction+"','DD/MM/YYYY'),'"+
degreAvancement+"')";
System.out.println(query);
AccesBdd accesBdd = new AccesBdd();
return (accesBdd.updateQuery(query));
}
//fichier jsp recuperant les params et demandant l'execution de la requete
<jsp:useBean id="action" scope="request" class="gestion_projet.Action" />
<jsp:useBean id="lot" scope="request" class="gestion_projet.suivi_qualite.Lot" />
<%
lot.setCodeLot(request.getParameter("code"));
action.setLot(lot);
action.setNoOrdreLivrable(Integer.parseInt(request.getParameter("ordre")));
action.setRangLivrable(Integer.parseInt(request.getParameter("rang")));
action.setActeur(Integer.parseInt(request.getParameter("acteurEntre")));
action.setDateDebutAction(request.getParameter("dateDebutActionEntree"));
action.setDateFinAction(request.getParameter("dateFinActionEntree"));
action.setObjetAction(request.getParameter("objetEntre"));
//la source de l'action est le suivi qualité: 'Q'
action.setOrigineAction('Q');
//le degres d'avancement est a 0
action.setDegreAvancement(0);
//l'état de l'action
action.setEtatAction(0);
//on recupere le code de la derniere action et on obtient la nouvelle
action.getAndSetNumAction();
//on enregistre l'action dans la table 'action'
if (action.addAction()==true)
{
%>Votre action a été enregistré sous le code : <%=action.getCodeAction()%><br><%
}
-
Et le commit il est où ???
-
euh..il est obligatoire celui là? lol
-
Deux solutions:
- soit tu utilises les javax.transaction.UserTransaction et tu fais un commit global sur toutes les requêtes d'une tansaction (ou un rollback)
- soit tu fais un commit sur chaque java.sql.Connection (ou éventuellement un rollback en cas d'erreur).
Si le commit n'est pas là: le comportement est hasardeux, sachant que suivant comment est pramaétrée la base ou ton serveur la connection peut être validée au bout d'un certain temps (time out de la connection) ou non...
Dans la plupart des cas rien n'est fais lorsque ta connection n'est pas validée, donc ta mise à jour est perdue...
a+
-
merci beaucoup, ca marche now, je pensais pas que le commit pouvait etre a l'origine de l'erreur.
:D
-
Comme quoi, souvent ce sont les choses les plus évidentes ... :wink: