publicclassUsuarioDaoextendsDao{publicvoidcreate(Usuariou)throwsException{open();stmt=con.prepareStatement("insert into usuarios values (null,?,?,?)");stmt.setString(1,u.getNome());stmt.setString(2,u.getEmail());stmt.setDate(3,newDate(u.getDataNascimento().getDate()));stmt.execute();stmt.close();close();}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringcmd=request.getParameter("cmd");if(cmd.equalsIgnoreCase("create")){create(request,response);}if(cmd.equalsIgnoreCase("alterar")){alterar(request,response);}}//criar um novo usuarioprotectedvoidcreate(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringmsg="";try{Stringnome=request.getParameter("nome");Stringemail=request.getParameter("email");dataNascimento=request.getParameter("dataNascimento");Usuariou=newUsuario(null,nome,email,newDate());newUsuarioDao().create(u);msg="Dados Gravados com Sucesso...";request.setAttribute("msg",msg);}catch(Exceptionex){msg="ERROR: "+ex.getMessage();ex.printStackTrace();}finally{request.getRequestDispatcher("Sistema.jsp").forward(request,response);}}
seria esse?
L
Luis_Augusto_Santos1 like
new Date(u.getDataNascimento().getDate())
Se este new Date é um objeto da classe java.util.Date, você realmente terá erro.
Se for um objeto da classe java.sql.Date, não.
Como validar isso? Simples, essa linha
Estaria com erro.
Caso não esteja, você precisa verificar se a coluna é, efetivamente, do tipo date.
C
Cristiano_Gomes
esta exatamente como vc falou, o problema é a ordem do dia mes e ano que o mysql nao esta reconhecendo, ele nao salva a data que eu coloco, ele salva um data qualquer, sempre a mesma data para todos os cadastro, e salva no formado ano mes e dia
L
Luis_Augusto_Santos1 like
Não, isso não acontece.
Muito provavelmente o erro esteja na tua query
stmt=con.prepareStatement("insert into usuarios values (null,?,?,?)");
Quando for criar uma query de inserção, por favor, defina quais são as colunas e qual a ordem das mesmas
stmt=con.prepareStatement("insert into usuarios (coluna_um, coluna_dois, coluna_tres, coluna_quatro) values (null,?,?,?)");
Isso evita problemas como este.
D
Dragoon
Só reforçando o que @Luis_Augusto_SantosNUNCA faça assim, coloque os campos para gravar as informações referente ao campos de sua tabela!
Cara, o teu discurso está incoerente com tuas ações.
Não adianta colocar os campos e mostrar o que aparece na tela.
Temos que ver código, código, entendeu?
Um ponto que pode estar ocasionando o problema é o fato de você estar utilizando um componente do html, que é input type=“date”. Ele possui um padrão diferente do padrão de dados que o java utiliza, logo, seria interessante verificar e ter certeza do que você recebe, a partir do momento que o formulário é submetido.
C
Cristiano_Gomes
packagepersistence;importjava.sql.Date;importjava.util.ArrayList;importjava.util.List;importentity.Usuario;publicclassUsuarioDaoextendsDao{publicvoidcreate(Usuariou)throwsException{open();stmt=con.prepareStatement("insert into usuarios (idUsuario,nome,email,dataNascimento)values (null,?,?,?)");stmt.setString(1,u.getNome());stmt.setString(2,u.getEmail());stmt.setDate(3,newDate(u.getDataNascimento().getDate()));stmt.execute();stmt.close();close();}<%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><linkrel="stylesheet"href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"><scripttype="text/javascript"src="https://code.jquery.com/jquery-3.1.0.js"></script><scripttype="text/javascript"src="https://code.jquery.com/ui/1.12.0/jqueryui.js"></script><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>CadastrarUsuario</title></head><body><center><h1>CadastrarUsuario</h1></center><divid="create"><formid="form1"action="Controle?cmd=create"method="post">Nome<br/><inputtype="text"name="nome"value=""size="50"id="nome"/><br/>Email<br/><inputtype="email"name="email"value=""size="50"id="email"/><br/>Nascimento<inputtype="text"name="dataNascimento"/><br/><inputtype="submit"value="Enviar"/></form><br/><br/>${msg}</div></body></html>
o problema continua o mesmo, coloquei type=“text” e mesmo assim nada
C
Cristiano_Gomes
consegui resolver uma parte coloquei no java e no mysql como String e deixei só no html como type=“date”.
porem aparece no formato ano mes e dia.
G
gui.oliveira921 like
Para salvar a data no banco você tem quem transformar o java.util.Date para java.sql.Date, sendo assim basta inserir esta linha: