Problema com data

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]

Ok! Muito obrigado!

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 ?