FuncionarioDTO funcionarioDTO = new FuncionarioDTO();
FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
Date datanasc = new Date(Date.parse(datanascimento));
Date dataadm = new Date(Date.parse(dataadmissao));
Date datadem = new Date(Date.parse(datademissao));
Float comis = new Float(Float.parseFloat(comissao));
Integer id = new Integer(Integer.parseInt(codfunc));
funcionarioDTO.setNome(nome);
funcionarioDTO.setCpf(cpf);
funcionarioDTO.setRg(rg);
funcionarioDTO.setCtps(ctps);
funcionarioDTO.setDatanascimento(datanasc);
funcionarioDTO.setSexo(sexo);
funcionarioDTO.setDataadmissao(dataadm);
funcionarioDTO.setDatademissao(datadem);
funcionarioDTO.setCargo(cargo);
funcionarioDTO.setEndereco(endereco);
funcionarioDTO.setComplemento(complemento);
funcionarioDTO.setBairro(bairro);
funcionarioDTO.setCidade(cidade);
funcionarioDTO.setUf(uf);
funcionarioDTO.setCep(cep);
funcionarioDTO.setTelres(telres);
funcionarioDTO.setTelcel(telcel);
funcionarioDTO.setEmail(email);
funcionarioDTO.setComissao(comis);
funcionarioDTO.setUsuario(usuario);
funcionarioDTO.setSenha(senha);
funcionarioDTO.setSituacao(situacao);
funcionarioDTO.setCodfunc(id);
if (funcionarioDAO.inserirFuncionario(funcionarioDTO)) {
return true;
} else {
return false;
}
}[/code]
porem c eu não converto a data o float e o int… la na classe View ele me da erro na hora de passar os Jtextfield por naum ser compativel os tipos…
alguem sabe como solucionar isso???
vlwww
Eu nao entendi muito bem o erro, mas vamos ver se eu consigo te ajudar.
No caso do date, float e int, as strings que vc recebe como parametro em algum momento ficam vazias? pq se sim. isso pode ocasionar um erro na hora da conversão
Outra coisa… quando o parâmetro ta vazio, la no seu DAO, para os campos do tipo Date principalmente o ideal é vc testar se o valor ta vazio, se tiver vc usa o setNull do PreparedStatement.
Doc do setNull
setNull
public void setNull(int parameterIndex,
int sqlType)
throws SQLException
Sets the designated parameter to SQL NULL.
Note: You must specify the parameter's SQL type.
Parameters:
parameterIndex - the first parameter is 1, the second is 2, ...
sqlType - the SQL type code defined in java.sql.Types
Throws:
SQLException - if a database access error occurs
No seu DAO, no momento de atribuir os valores para o PS, você pode fazer assim:
PreparedStatement ps = conn.prepareStatement("INSERT INTO TABLE (id, descricao, data, valorMonetario) values (?, ?, ?, ?)");
// atributo que tenho certeza que nunca vai ser nulo
ps.setLong( 1, meuObj.getId() );
if ( meuObj.getDescricao() == null )
{
ps.setNull( 2, java.sql.Types.VARCHAR );
}
else
{
ps.setString( 2, meuObj.getDescricao() );
}
if ( meuObj.getData() == null )
{
ps.setNull( 3, java.sql.Types.DATE ); // nesse caso da data, vc vai ter que ver o que vc tem no banco, se é DATE ou TIMESTAMP
}
else
{
ps.setDate( 3, new java.sql.Date( meuObj.getData().getTime() ) );
}
if ( meuObj.getValorMonetario() == null )
{
ps.setNull( 4, java.sql.Types.DOUBLE ); // nesse caso do valor, vc vai ter que ver o que vc tem no banco, se é DOUBLE ou FLOAT
}
else
{
ps.setDouble( 4, meuObj.getValorMonetario() );
}
Não sei se tem jeito mais facil de fazer isso… eu quando usava JDBC fazia assim… agora eu nao me preocupo mais pq uso JPA/Hibernate
(melhor coisa que ja inventaram desde o óculos com canudo)
[quote=baison]Outra coisa… quando o parâmetro ta vazio, la no seu DAO, para os campos do tipo Date principalmente o ideal é vc testar se o valor ta vazio, se tiver vc usa o setNull do PreparedStatement.
Doc do setNull
setNull
public void setNull(int parameterIndex,
int sqlType)
throws SQLException
Sets the designated parameter to SQL NULL.
Note: You must specify the parameter's SQL type.
Parameters:
parameterIndex - the first parameter is 1, the second is 2, ...
sqlType - the SQL type code defined in java.sql.Types
Throws:
SQLException - if a database access error occurs[/quote]
cara tentei de tudo jeito aqui fui testar na variavel int que tambem esta dando erro…
mais naum grava a do tipo int naum fala null mais fala assim : For input string: “”
não cara ele da o erro na hora de grava quando vai vazio ele me da erro tipo vo por aqui como eo estava setando o null…
if (funcionarioDTO.getDatademissao().equals("")){
stmt.setNull(8, Types.DATE);
}else{
stmt.setDate(8, new java.sql.Date(funcionarioDTO.getDatademissao()
.getTime()));}
[quote=Naruto]não cara ele da o erro na hora de grava quando vai vazio ele me da erro tipo vo por aqui como eo estava setando o null…
if (funcionarioDTO.getDatademissao().equals("")){
stmt.setNull(8, Types.DATE);
}else{
stmt.setDate(8, new java.sql.Date(funcionarioDTO.getDatademissao()
.getTime()));}[/quote]
Mas olha so…
Esse getDatademissao sendo um objeto ele pode estar nulo… então, vc tentar testar com o .equals("") ele vai te dar um NullPointerException… vc tem que testar se é igual a nulo, igual no exemplo que eu te passei
E ainda tem mais… verifica no banco o tipo da coluna data emissao… se é date ou timestamp
tpw eu to usando o postgres e tp tentei dessa forma que vc me falo agora e tambem a mesma coisa isso ta me deixando louco… sera que ninguem passo por isso??
[quote=Naruto]no banco é date cara no delphi vai de boa isso…
tpw eu to usando o postgres e tp tentei dessa forma que vc me falo agora e tambem a mesma coisa isso ta me deixando louco… sera que ninguem passo por isso??
[/quote]
Olha so… vamo fazer o seguinte:
1º: Teste o seu DAO colocando todos os atributos com valores validos (preenchidos)
2º: Vai colocando vazio de 1 em 1
E depois, coloca o seu metodo do seu DAO todo aki, inclusive a query
Se depois de tudo isso nao der, so pode ser banco (ou versão do driver do postgre que vc ta usando)
c eu preencho tudo corretamente ai vai de boa… c eu deixo uma data sem me retorna null no console… apenas isso… e c eu deixo o int vazio ele me retorna outra coisa sem ser null…
[quote=Naruto]sim m cara tenhu 3 campos data um int e um float…
c eu preencho tudo corretamente ai vai de boa… c eu deixo uma data sem me retorna null no console… apenas isso… e c eu deixo o int vazio ele me retorna outra coisa sem ser null…
que sera que eu to fazendo de errado???
[/quote]
É kra… sem ver o codigo todo fica dificil… as vezes é uma besteria atoa que vc ja nem ta mais enxergando pq ja ta a horas e horas vendo isso…
Da uma parada… relaxa… depois volta a olhar o codigo q vc vai achar…