Olha so pessoal, abaixo segue o jsp que deveria gravar uma data digitada:
<%@page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.text.DateFormat"%>
<%
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try{
Class c = Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){
System.out.println("Erro: " + e);
}
try{
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testedata","xxxxx","xxxxx");
}
catch(SQLException e){
System.out.println("Erro: " + e);
}
try{
stmt = conn.prepareStatement("insert into data(dataserv) VALUES (?)");
SimpleDateFormat f = new SimpleDateFormat("dd/mm/yyyy");
Date data = f.parse(request.getParameter("dataserv"));
stmt.setDate(1, data);
stmt.executeUpdate();
stmt.close();
conn.close();
}
catch(Exception e){
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
O que pode estar errado?
Oi Marco,
Pela mensagem de Erro, vc deveria utilizar java.sql.Date e não java.util … Cheque o tipo do campo na tabela.
:roll:
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!
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
String dtFinal = textFieldDtFinal.getText();//pega no seu textfield
String [] aFinal = dtFinal.split("/");//quebra a string nas barras
GregorianCalendar dtF = new GregorianCalendar(TimeZone.getTimeZone("GMT-3"),new Locale("pt_BR"));
dtF.set(GregorianCalendar.YEAR,Integer.parseInt(aFinal[2]));//aqui seta o ano
dtF.set(GregorianCalendar.MONTH,Integer.parseInt(aFinal[1])-1);//aqui seta o mes
dtF.set(GregorianCalendar.DATE,Integer.parseInt(aFinal[0]));//aqui seta o dia
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!
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”
[quote=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![/quote]
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?
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) ?
[quote=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?[/quote]
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…
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 ?