Converção de String para Date

9 respostas
R

Pessoal estou precisnao de uma ajuda, estou tentando converter uma String para um date (java.sql.Date) para gravar no banco de dados, criei uma classe funcionário e nela eu tenho a data de admissaõ e essa date esta dando erro quando vou convertela para Date. gostaria que vocês podessem me ajudar !!!esse é a minha classe Inserir Funcionario, no meu modelo a data de admissão esta como tipo Date(java.sql.Date).

package comandos;

import java.io.IOException;

import java.sql.Date;

import java.text.SimpleDateFormat;
import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

import business.Funcionario;

import dao.DaoFuncionario;

public class InserirFuncionario extends AbstractCommand{

private DaoFuncionario dao = new DaoFuncionario();

public void executa (HttpServletRequest request, HttpServletResponse response) 
throws IOException, ServletException {
	
	String matr = request.getParameter("matr");

String admissao = request.getParameter(“admissao”);
String funcao = request.getParameter(“funcao”);

Funcionario f = new Funcionario();
	if(matr != null && !"".equals(matr))
	f.setMatricula(new Long(matr));
	
	try {
       java.sql.Date dataAdmissao = new java.sql.Date(new SimpleDateFormat("dd/MM/yyyy").parse(admissao).getTime());
} catch (ParseException e) {

e.printStackTrace();

}
[b]f.setAdmissao(dataAdmissao);[/b] // o erro acontece aqui nesse trecho do codigo 

	f.setFuncao(funcao);
	
	dao.incluir(f);
	
	RequestDispatcher rd = request.getRequestDispatcher("funcionarioInserir.jsp?msg=Funcionario Inserido");
	rd.forward(request, response);
	
	
}

}

9 Respostas

wagnerfrancisco
  1. Você simplesmente quer ignorar caso não consiga fazer parse da data? Do jeito que você fez, você apenas “silencia” o erro.

  2. Você precisa declara a variável dataAdmissao fora do bloco try/catch, assim ela será acessível, algo assim:

java.sql.Date dataAdmissao = null;
try {
    dataAdmissao = new java.sql.Date(new SimpleDateFormat("dd/MM/yyyy").parse(admissao).getTime()); 
} catch (ParseException e) {
    // eu faria o tratamento adequado aqui, nao ignoraria...
}

f.setAdmissao(dataAdmissao);

Assim você consegue acesso a variável dataAdmissao.

R

Não funcionou, ta dando erro no codigo !!!

wagnerfrancisco

Qual erro Rodrigo?

R
java.sql.Date dataAdmissao = null;    	
	
	try {
       java.sql.Date [b]dataAdmissao[/b] = new java.sql.Date(new SimpleDateFormat("dd/MM/yyyy").parse(admissao).getTime());// ta dando erro aqui !!!  Multiple markers at this line
//- Duplicate local variable dataAdmissao
//- The value of the local variable dataAdmissao is
} catch (ParseException e)

{

e.printStackTrace();

}
f.setAdmissao(dataAdmissao);

	f.setFuncao(funcao);
	
	dao.incluir(f);
	
	RequestDispatcher rd = request.getRequestDispatcher("funcionarioInserir.jsp?msg=Funcionario Inserido");
	rd.forward(request, response);
	
	
}

}

wagnerfrancisco

Você declarou a variável de novo. Faça como lhe passei antes, sem declarar de novo (tire o java.sql.Date da variável dentro do try).

java.sql.Date dataAdmissao = null;  
try {
   //... aqui, veja que nao repete o java.sql.Date
   dataAdmissao = new java.sql.Date(new SimpleDateFormat("dd/MM/yyyy").parse(admissao).getTime()); 
}catch (ParseException e) {  
//...
R

Você fala assim :
mais mesmo assim esta dando erro !!! //Unhandled exception type ParseException

java.sql.Date dataAdmissao = null;

try {
			dataAdmissao = new java.sql.Date([b]new SimpleDateFormat("dd/MM/yyyy").parse(admissao)[/b].getTime());
} catch (ParseException e)

{

e.printStackTrace();

}
f.setAdmissao(dataAdmissao);
wagnerfrancisco

Pelo que vi você está importando isto:

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

Remova este import e use este:

import java.text.ParseException;
R

beleza o erro saiu, mais ele eu um erro na hora de executar a inclusão do funcionário no banco.

org.hibernate.exception.ConstraintViolationException: could not insert: [business.Funcionario]

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)

at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:64)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2186)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2666)

at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)

at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)

at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)

at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)

at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)

at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)

at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)

at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562)

at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550)

at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)

at $Proxy8.save(Unknown Source)

at dao.DaoFuncionario.incluir(DaoFuncionario.java:36)

at comandos.InserirFuncionario.executa(InserirFuncionario.java:50)

at servlets.Command.doPost(Command.java:59)

at servlets.Command.doGet(Command.java:50)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at filter.LoginFilter.doFilter(LoginFilter.java:43)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Unknown Source)

Caused by: org.postgresql.util.PSQLException: ERRO: valor nulo na coluna nome viola a restrição não-nula

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:304)

at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:57)

 42 more
wagnerfrancisco

É só ler a stacktrace… :smiley:

org.postgresql.util.PSQLException: ERRO: valor nulo na coluna "nome" viola a restrição não-nula

Tem que setar a variável nome. Não vi um functionário.setNome(…) no seu código!

Criado 22 de julho de 2012
Ultima resposta 22 de jul. de 2012
Respostas 9
Participantes 2