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
B
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
sera que vc pode me ajudar a usar o setnull?? tentei aqui mais acho que nau usei da forma correta
B
baison
Bom, la vai um exemplo simples:
No seu DAO, no momento de atribuir os valores para o PS, você pode fazer assim:
PreparedStatementps=conn.prepareStatement("INSERT INTO TABLE (id, descricao, data, valorMonetario) values (?, ?, ?, ?)");//atributoquetenhocertezaquenuncavaisernulops.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,newjava.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)
Naruto
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
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: “”
B
baison
mas ta dando erro na hora que vc esta gravando no DAO ou na hora vc ta convertendo os valores nesse método que vc colocou acima?
Coloca o erro todo ai
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()));}
Naruto
foda que mesmo eu tentando da um println na sql naum da cara parece que nem passa por ele o.O e retorna essa porra desse null o.O
B
baison
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()));}
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
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??
B
baison
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??
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)
Eu uso Postgre aki tb… e funfa…
Naruto
caraaa eu acho que deve ser a versao do drive inton porque isso eu ja fiz tudo… qual versão vc esta usando???
B
baison
To usando o postgresql-8.1-405.jdbc3.jar
Muito estranho kra… vc chegou a testar campo a campo para ver se é realmente esse q ta com prob?
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???
B
baison
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???
É 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…
se quiser, posta a sua classe DAO ae…
Naruto
olha cara chega em casa eu irei postar todas as classes ok ??? hehe pq ta foda mesmo
Naruto
c alguem mais puder ajudar…
Naruto
eu puis um println para mostrar o insert …
ai digitei tudo… olha o que saiu no insert
Insert into contatos(nome, data, endereco) values(jeferson,2008-09-12 -0300,4)