Dúvida com gravação de data

10 respostas
M

Pessoal é o seguinte:
Tenho um simples form html onde digito uma data em dd/mm/aaaa e o método post chama o jsp que deveria gravar essa data no banco em um campo datetime… tentei de diversas forma e recebi essa dica:

...
try{
StringTokenizer sb = new StringTokenizer(request.getParameter("dataserv"));
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(sb.nextToken()));
cal.set(Calendar.MONTH, Integer.parseInt(sb.nextToken()));
cal.set(Calendar.YEAR, Integer.parseInt(sb.nextToken()));
stmt = conn.prepareStatement("insert into data(dataserv) VALUES (?)");
java.sql.Date data = new java.sql.Date(cal.getTimeInMillis());
stmt.setDate(1, data);
stmt.executeUpdate(); 
stmt.close();
conn.close();

Além de dar “data can not be resolved”, eu penso que teria um jeito mais simples de fazer isso… qual?
Assim?

DateFormat df = new SimpleDateFormat("dd/mm/yyyy");
java.sql.Date data =  request.getParameter("dataserv") ;

Num sei… helpppppp

10 Respostas

M

Opa,

Faça assim:

SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy"); Date date = f.parse(request.getParameter("dataserv"); stmt.setDate(1, date);

:joia:

M

olha só… fiz conforme recomendado e resultou no seguinte:

An error occurred at line: 6 in the jsp file: /web/testeData.jsp
Generated servlet error:
The type Date is ambiguous

An error occurred at line: 6 in the jsp file: /web/testeData.jsp
Generated servlet error:
data cannot be resolved

o jsp inteiro tá assim(é pequeno):

<%@page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.text.DateFormat"%>
<%@page import="java.util.*" %>

<%
    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);
} 
%>

Onde está o erro?

C

Olá marcopolo5,

O erro diz que existe mais de uma classe importada com o nome Date. Existem as classes java.util.Date e java.sql.Date, e você importou as duas:

<%@page import="java.sql.*" %> <%@page import="java.util.*" %>

Importe separadamente as classes que você quer, pra não deixar ambigüidade.

Até mais,

M

mas nesse caso, qual das duas?

C

Olá marcopolo5,

Você pode usar só a java.sql.Date:

Date data = new Date(f.parse(request.getParameter("dataserv")).getTime()); stmt.setDate(1, data);

Até mais,

M

mas por que o .getTime()?

C

Olá marcopolo5,

O método getTime() é usado para obter a quantidade de milissegundos desde 1º de janeiro de 1970, e é através dele que você pode converter um objeto java.util.Date para java.sql.Date.

Funcionou?

Até mais,

M

deu 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

C

Olá marcopolo5,

Coloque aqui exatamente o código aí da sua página (linhas ao redor da linha 6).

Até mais,

M

tá aí em cima…

Criado 1 de julho de 2006
Ultima resposta 12 de jul. de 2006
Respostas 10
Participantes 3