Problemas de conversão

Olá pessoal, eu tenho uma duvida, o comando abaixo, o eclipse diz que não é possível mexer com tipos diferentes, como eu faço para transformar???

ps.setBoolean(2, cliente.getSexo());
ps.setDate(3, cliente.getData_Nascimento());

Sendo que eles estão na declarados na classe Usuário como:

Boolean Sexo
Date Data_Nascimento;

Alguém pode me ajudar…

Um abraço

Marcus Paulo

ps é um PreparedStatement?

Se for, de uma olhada na descrição dos métodos, e veja se os setXXX aceitam tipos primitivos ou objetos.

ps.: dúvida meio estranha para estar em “Servlets, JSP e frameworks Web” han? :wink:

A questão do boolean eu não sei, como o LIPE disse, dê uma olhadinha nos métodos pra ver se aceita primitivo.

Quanto a data, o PreparedStatement espera um objeto do tipo java.sql.Date e não do tipo java.util.date. Será necessário uma conversão. Tente algo do tipo:


java.sql.Date sqlToday = new java.sql.Date( (Date) cliente.getData_Nascimento().getTime() );
ps.setDate(3,sqlToday);

o setBoolean() aceita tipo primitivo:

ps.setBoolean(2, cliente.getSexo().booleanValue());

o setDate() aceita java.sql.Date

java.sql.Date dataNascimento; ps.setDate(3, dataNascimento);

[quote=“code”]o setBoolean() aceita tipo primitivo:
ps.setBoolean(2, cliente.getSexo().booleanValue());[/quote]

OOOOOUUUU:

boolean sexo = cliente.getSexo().equals(“M”) ? true : false;

Estaria certo se sexo tivesse sido declarado como String e o domínio fosse “M” e “F”.
Mas ele declarou sexo como Boolean, sei lá, talvez no sistema dele tenha uma pergunta “Gosta de sexo? sim/não” :lol:

Olá, gostaria de agradecer a todos, que responderam a minha mensagem, e desculpe se caso eu botei em topico errado, mas como eu to mexendo com Servlet e classes Dao, e paginas Jsp, achei que algum poderia ter passado pelo mesmo problema.

mas a duvida continua

o boolean ate agora foi resolvido com
ps.setBoolean (5, cliente.isSexo());

mas o date ate agora não quis acordo.
ja experimentei varias comandos inclusive esse, mas não tive sucesso.

    [code] ps.setDate    (33, new java.sql.Date(new java.util.Date(cliente.getData_Nascimento()).getTime()))[/code]


o erro é “ClienteDao.java”: cannot resolve symbol: constructor Date (java.util.Date)in class java.util.Date at line 76, column 47

Obrigado pela atenção de todos.

um abraço

Marcus Paulo

O construtor de java.sql.Date recebe um long e não um java.util.Date.

Olá voce pode me mostrar o codigo para um PreparedStatement
ps.setDate = ???

Muito obrigado pela atenção

Marcus Paulo

ps.setDate( 1, new java.sql.Date( (new Date()).getTime() ) );

Ola primeiro gostaria de agradecer a ajuda de todos.

bem fazer melhor.

–> Essa seta é apenas para apontar a linha com problema

Classe de Usuario (Igual ao banco de dados)

[code]

public class Usuario {
//Declaração da classe usuario
private int Id_perm;
private String Nome_Usuario;
private Date Data_Nascimento;
private String Senha_Usuario;
… outros atributos e Get setter
}[/code]

Classe UsuarioDao

  ps = conn.prepareStatement("INSERT INTO .....

         ps.setInt     (1, cliente.getId_perm());
         ps.setString (2, cliente.getNome_Usuario());
 -->        ps.setDate   (3, new java.sql.Date(new Date(cliente.getData_Nascimento()).getTime())); // Linha com problema         ps.setString (4, cliente.Senha_Usuario());

erro dessa classe
[list]
[color=“red”]
“ClienteDao.java”: cannot resolve symbol: constructor Date (java.util.Date)in class java.util.Date at line 25, column 10
[/color]

[/list]

Controlador

  if(acao.equalsIgnoreCase("cliente.novo")){
      Cliente cliente = new Cliente();
      
      cliente.setId_perm(request.getParameter("id_perm"));
      cliente.setSituacao(request.getParameter("nome_usuario"));
 -->     cliente.setDTRegistro(request.getParameter("data_nascimento")); //Linha com problema 
      cliente.setNome(request.getParameter("senha_usuario"));

erro

[list]
[color=red]
“Controlador.java”: setData_Nascimento(java.util.Date) in br.com.millenniumweb.modelo.cliente.le.Cliente cannot be applied to (java.lang.String) at line 35, column 15
[/color=red]

Muito obrigado
pela atenção, por favor, me ajudem …

Um abraço

Marcus Paulo[/list]

Que tal usar o padrão de nomenclatura?
Classe Usuario:

public class Usuario { //Declaracao da classe usuario private int idPerm; private String nomeUsuario; private Date dataNascimento; private String senhaUsuario; ... outros atributos e Get setter }

Classe UsuarioDAO

    ps = conn.prepareStatement("INSERT INTO .....
    ps.setInt(1, cliente.getId_perm());
    ps.setString(2, cliente.getNome_Usuario());
    ps.setDate(3, new java.sql.Date(cliente.getDataNascimento().getTime()));
    ps.setString (4, cliente.Senha_Usuario());

Classe Controlador

if(acao.equalsIgnoreCase("cliente.novo")){ 
      Cliente cliente = new Cliente(); 
      cliente.setIdPerm(request.getParameter("id_perm")); 
      cliente.setSituacao(request.getParameter("nome_usuario")); 

      // Precisa fazer um parse de String para Date
      // Por exemplo
      SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
      Date dataNascimento = sdf.parse(request.getParameter("data_nascimento"));
      // Agora você tem o tipo certo
      cliente.setDTRegistro(dataNascimento);

      cliente.setNome(request.getParameter("senha_usuario"));

Ola pessoal, antes de mais nada eu gostaria de agradecer muito a voces,

bem sobre o Date funcionou legal.

agora o problema ainda continua com o Boolean. ???

Controlador

      cliente.setSituacao(new Boolean(request.getParameter("situacao")));

Erro
“Controlador.java”: setSituacao(boolean) in br.com.millenniumweb.modelo.cliente.le.Cliente cannot be applied to (java.lang.Boolean) at line 59, column 15

UsuarioDao

ps.setBoolean (3, cliente.isSituacao());

aqui não apresenta erro.

um abraço

Marcus Paulo

[quote=“mpaulo”] cliente.setSituacao(new Boolean(request.getParameter("situacao")));

Erro
“Controlador.java”: setSituacao(boolean) in br.com.millenniumweb.modelo.cliente.le.Cliente cannot be applied to (java.lang.Boolean) at line 59, column 15[/quote]

Bem, seu método setSituacao() espera um boolean primitivo, e vc tá passando pra ele um objeto Boolean. Tente assim:

cliente.setSituacao(new Boolean(request.getParameter("situacao")).booleanValue());

[]'s