Long.parseLong de string null

Caros,

Procurei pelo forum, porém a quantidade de retorno que recebo e não acho o que preciso… é enorme…

Seguinte… eu tenho um campo no banco de dados que é do tipo Long e por causa de conversões internas no sistema, preciso que o objeto seja uma string e na hora de inserir no banco preciso converte-lo para long, só que muitas vezes o valor resultará null mesmo e o banco já está programado para receber null, porém como é postgre, ele faz a verificação de tipo de campo para inserir no banco e não pretendo desligar a verificação…

Vamos ao problema… eu estou recebendo java.lang.NumberFormatException: null ao fazer um Long.parseLong quando o valor da String é null

[]´s
a todos!

Porque não faz uma verificação, se for null vc exibe zero ou algo similar?

Pq eu preciso q seja null mesmo, pois o campo é timstamp. Se eu colocar 0 vai gravar com data de 1970… :frowning:

Eita… Como vc não mencionou que o campo é do tipo timstamp, entendi outra coisa, tente explicar melhor.

Abraços.

Fica com DEUS.

Vamos por partes…
1 eu pego uma data no banco no formato aaaa-mm-dd hh:mm:ss
2 converto essa data para unixtime transformando em um long
3 eu jogo dentro de um setter que é uma string, porém quando o valor é null eu nao converto
4 jogo no statment para fazer o update no banco convertendo os longs que estão como string usando o parselong
Nesse momento da o problema quando tenho uma string null

Nao sei se consegui explicar bem… Mas To tentando… :slight_smile:

Voce poderia criar um metodo para verificar essa data toda vez em que for trabalhar com ela.
Se a verificacao for igual a um string:

Long numeroQualquer = Long.parseLong(suaVariavelString);

Converta ela em long.
Se a verificacao for igual a um long:

String numeroQualquer = String.valueOf(suaVariavelLong);

Converta ela em uma String.

Em relacao ao null. Porque voce nao cria outro metodo para obrigar o usuario a declarar essa data. Assim ela nunca iria ser null.

Estou sem entender uma coisa…

[quote=eaglebr]
Pq eu preciso q seja null mesmo, pois o campo é timstamp. Se eu colocar 0 vai gravar com data de 1970… [/quote]
Como voce vai fazer uma variavel long assumir um valor null sendo que esta nao pode assumir esse valor?
Mesmo usando conversao… Ate onde eu sei null nao existe em long.

Esse era meu medo… Se nao existe null em long lascou… Vou ter que criar um método diferente… :frowning:

“long” (primitivo) não pode receber valor null
Long ou “java.lang.Long” (wrapper) pode receber valor null

Para checar se um campo do banco de dados é null, você deve usar “wasNull” se o valor lido nesse campo for zero. Se foi zero, mas wasNull retornou true, então o valor não é zero e sim null.

Também fiquei um pouco confuso com esse negócio de o campo ser long, timestamp, etc.

Mas supondo que você tenha um campo long que quer setar como null, tente o setObject do Prepared Statement.

if (valorString == null) { // Supondo que 3 é posição do parâmetro. // Aqui coloquei o tipo BIGINT, procure na classe java.sql.Types aquele que corresponde ao tipo correto na base preparedStatement.setObject(3, null, Types.BIGINT); } else { // Agora sim pode converter para long preparedStatement.setLong(3, Long.parseLong(valorString)); }