nsaacc
Outubro 19, 2006, 11:53am
#1
Bom dia pessoal!
Estou com um pequeno problema. Estou atribuindo o valor “null” a uma
variável tipo “date”, mas na hora de usar essa variável em uma instrução
SQL (insert), surpresa! Não está null, mas “Thu Oct 19 09:46:16 GMT-03:00 2006”.
Como fazer com que a variável receba o null verdadeiramente?
[code]
if (data_realizacao.trim() != “”)
{
dt_realizacao = formataData(data_realizacao);
apostrofo = “’”;
}
else
{
dt_realizacao = null;
apostrofo = “”;
}
salva = “insert into teste values (Gen_ID(GST,1),”+apostrofo+dt_realizacao+apostrofo+"’)";
fcoury
Outubro 19, 2006, 12:00pm
#2
nsacc,
Infelizmente isso não é verdade. Quando você atribui null a uma variável date, ela está sempre null, pode confiar.
Eu acredito que seu código tenha um bug, e desconfio que seja no seu if:
if (data_realizacao.trim() != "")
{
dt_realizacao = formataData(data_realizacao);
apostrofo = "'";
}
else
{
dt_realizacao = null;
apostrofo = "";
}
Não utilize != com Strings, porque se a instância não for a mesma, não vai ser igual nunca.
Tente mudar seu código para:
if (!data_realizacao.trim().equals("")) {
dt_realizacao = formataData(data_realizacao);
apostrofo = "'";
} else {
dt_realizacao = null;
apostrofo = "";
}
e veja o que acontece, ok?
Abraços!
Em alguns bancos, certo tipos de date não suportam NULL, veja se é o seu caso na documentação de seu banco.
fcoury
Outubro 19, 2006, 12:09pm
#4
giovanni,
Pode até ser que o banco dele não aceite nulos, mas acho que o problema nem chega lá. Explico:
O if dele não está chegando na condição que deveria chegar quando o conteúdo da String está vazia e cai nessa parte:
dt_realizacao = formataData(data_realizacao);
apostrofo = "'";
Quando a função formataData dele é chamada, é criada uma data sem parâmetro, ou seja, a data corrente e daí vem o conteúdo “Thu Oct 19 09:46:16 GMT-03:00 2006”, certo?
nsaacc
Outubro 19, 2006, 2:04pm
#5
Felipe e Giovanni,
Muito obrigado pelas observações!
Quanto ao banco de dados, estou utilizando o Firebird 1.5 e ele aceita o tipo date como null.
A sugestão do Felipe resolveu meu problema.