Olha so pessoal, abaixo segue o jsp que deveria gravar uma data digitada:
<%@pagecontentType="text/html; charset=iso-8859-1"language="java"import="java.sql.*"errorPage=""%><%@pageimport="java.text.SimpleDateFormat"%><%@pageimport="java.text.DateFormat"%><%Connectionconn=null;PreparedStatementstmt=null;ResultSetrs=null;try{Classc=Class.forName("com.mysql.jdbc.Driver");}catch(Exceptione){System.out.println("Erro: "+e);}try{conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testedata","xxxxx","xxxxx");}catch(SQLExceptione){System.out.println("Erro: "+e);}try{stmt=conn.prepareStatement("insert into data(dataserv) VALUES (?)");SimpleDateFormatf=newSimpleDateFormat("dd/mm/yyyy");Datedata=f.parse(request.getParameter("dataserv"));stmt.setDate(1,data);stmt.executeUpdate();stmt.close();conn.close();}catch(Exceptione){out.println(data);out.println(e);}%>
e isso retorna o seguinte erro:
An error occurred at line: 6 in the jsp file: /web/testeData.jsp
Generated servlet error:
Type mismatch: cannot convert from java.util.Date to java.sql.Date
An error occurred at line: 6 in the jsp file: /web/testeData.jsp
Generated servlet error:
data cannot be resolved
Pela mensagem de Erro, vc deveria utilizar java.sql.Date e não java.util … Cheque o tipo do campo na tabela.
:roll:
M
mtosatti
O problema é que você está atribuindo um valor de data para um objeto java.util.Date na seguinte linha:
Date data = f.parse(request.getParameter("dataserv"));
e o parâmetro da linha abaixo espera um java.sql.Date:
stmt.setDate(1,data);
Realize a conversão da data para java.sql.Date antes de passá-la como parâmetro. Tente alguma coisa como isso para certificar que esse é o erro:
Date data = f.parse(request.getParameter("dataserv"));
java.sql.Date nova_data = new java.sql.Date(data.getTime());
stmt.setDate(1, nova_data);
Falow!
ramilani12
Vc não pode converter de java.util.Date para java.sql.Date a idéia é fazer um casting para java.sql.Date
Ou de outra forma , usando a Calendar , apenas sugestão
StringdtFinal=textFieldDtFinal.getText();//pega no seu textfieldString[]aFinal=dtFinal.split("/");//quebra a string nas barrasGregorianCalendardtF=newGregorianCalendar(TimeZone.getTimeZone("GMT-3"),newLocale("pt_BR"));dtF.set(GregorianCalendar.YEAR,Integer.parseInt(aFinal[2]));//aqui seta o anodtF.set(GregorianCalendar.MONTH,Integer.parseInt(aFinal[1])-1);//aqui seta o mesdtF.set(GregorianCalendar.DATE,Integer.parseInt(aFinal[0]));//aqui seta o dia
M
mtosatti
ramilani12, gostaria de saber por que a conversão sugerida não pode ser realizada?
Date data = f.parse(request.getParameter("dataserv"));
java.sql.Date nova_data = new java.sql.Date(data.getTime());
stmt.setDate(1, nova_data);
É alguma restrição em relação ao JSP (?), pois eu testei o código enviado e funcionou normalmente…
Até mais!
ramilani12
mtosatti , nenhum problema com essa conversão até disse que era sugestão a minha proposta …
mas a classe Date está com seus métodos “depreciados”
mtosatti:
ramilani12, gostaria de saber por que a conversão sugerida não pode ser realizada?
Date data = f.parse(request.getParameter("dataserv"));
java.sql.Date nova_data = new java.sql.Date(data.getTime());
stmt.setDate(1, nova_data);
É alguma restrição em relação ao JSP (?), pois eu testei o código enviado e funcionou normalmente…
Até mais!
M
mtosatti
Ok! Muito obrigado!
M
marcopolo5
eu arrumei o cast assim:
java.util.Date data = f.parse(request.getParameter("dataserv"));
java.sql.Date nova_data = new java.sql.Date(data.getTime());
stmt.setDate(1, nova_data);
e dá o seguinte erro:
An error occurred at line: 6 in the jsp file: /web/testeData.jsp
Generated servlet error:
data cannot be resolved
O que mais pode estar errado?
ramilani12
Ele nao fez a conversão para Date marcopolo , acima tem uma sugestão minha que pode resolver usando a classe Calendar , como esta seu SimpleDateFormat assim: (dd/MM/yyyy) ?
marcopolo5:
eu arrumei o cast assim:
java.util.Date data = f.parse(request.getParameter("dataserv"));
java.sql.Date nova_data = new java.sql.Date(data.getTime());
stmt.setDate(1, nova_data);
e dá o seguinte erro:
An error occurred at line: 6 in the jsp file: /web/testeData.jsp
Generated servlet error:
data cannot be resolved
O que mais pode estar errado?
M
marcopolo5
olha ramilani12, entendo, mas tem de existir uma forma mais simples… a coisa é muito simples para tratar dessa forma… tem de ter outro jeio mais simples…
ramilani12
que banco de dados vc esta utilizando ?
Prq ja tentei dessa mesma forma que vc esta tentando e passei por problemas iguais , resolvi com a minha solução acima …
Mude seu SimpleDateFormat para dd/MM/yyyy veja no que da ?