gravar valores null em java  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
kerbage
JavaBaby

Membro desde: 11/01/2009 20:41:51
Mensagens: 75
Offline

bom dia! estou terminando o sistema desktop de controle de material, o cliente pediu para adicionar alem do tombo, cologar o numero_serial do aparelho! só que em alguns aparelhos velhos não foi cologado o tombamento, sendo assim ele vai gravar o tombamento ou numero_serial como valor null, o problema e que ele não aceita no meu programa gravar mais registros nullos, pois sempre que faço um rs.first no banco ele acha esse registro. Tem como adicionar mais registros nullos sem ele reclame!?

aqui esta meu codigo:




obrigado pela atenção...





drsmachado
GUJ Expert

Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline

Teu problema está no banco.
Ou você altera a propriedade da coluna que contém os dados do tombo ou tomba todos os equipamentos que não possuem tal informação (o que, a critério de controle, seria o ideal).
Colocar o tombo como null poderia causar vulnerabilidade no sistema, afinal, se alguém omite o tombo, isso será válido para o bd...

Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".

Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM
kerbage
JavaBaby

Membro desde: 11/01/2009 20:41:51
Mensagens: 75
Offline

eu concordo com vc! as columas tombo e numero_serial estão em not_null desabilitado, mesmo assim ele esta acusando que existe um registro nullo quando faço o resultset. será que estou passando os valores como vazio?
drsmachado
GUJ Expert

Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline

As colunas aceitam nulo, certo?
Ocorre algum erro ao realizar a consulta ao banco?
Se sim, posta ai.

Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".

Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM
kerbage
JavaBaby

Membro desde: 11/01/2009 20:41:51
Mensagens: 75
Offline

ele nao da erro no banco!
quando vou cadastrar com um campo vazio tombo ou numero_ serial ele avisa que tombo ou serial já existem, no caso o null!
drsmachado
GUJ Expert

Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline

O select que você faz retorna resultados pois vão existir informações onde o valor do tombo e do numero_serial são nulos. É como uma pesquisa "SELECT * FROM ALGUM_LUGAR WHERE 1 = 1", é certeza de retorno.
Se você não pretende corrigir a inconsistência do banco (serial ou tombo deveriam ser PK), então faça a validação no código, coloque algo do tipo
[code
if(valorRetornoTombo != null && !valorRetornoTombo.equals("")){
[/code]

Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".

Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM
drigo.angelo
Virtual Machine Man
[Avatar]

Membro desde: 19/11/2009 12:17:08
Mensagens: 744
Localização: Uberlândia - MG
Offline

Tem a função Coalesce ou Isnull (depende do sgbd) no sql, que pode ser utilizado para o banco não retornar valores null

@drigoangelo

IE6 no more
[Email] [MSN]
kerbage
JavaBaby

Membro desde: 11/01/2009 20:41:51
Mensagens: 75
Offline

o problema esta no meu codigo, pois quando faço insert diretamente no banco com os valores dos campos em branco ele salva o registro sem problema
drsmachado
GUJ Expert

Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline

Posta o código que faz a consulta.

Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".

Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM
gleidsonrms
What is classpath?

Membro desde: 08/09/2006 14:39:58
Mensagens: 6
Localização: Campo Grande MS
Offline

Na linha 68 do seu código faça a seguinte alteração:

Já tive um problema parecido usando Postgre, isso resolveu.
[Yahoo!] [MSN]
kerbage
JavaBaby

Membro desde: 11/01/2009 20:41:51
Mensagens: 75
Offline

o meu sgbd que estou usando tb e o postgre.
xxjamisxx
JavaTeenager
[Avatar]

Membro desde: 19/09/2008 22:15:13
Mensagens: 161
Offline

aspas "" assim nao resoveria seu ploblema
pq assim ele nao reclamaria de valor nullo
drsmachado
GUJ Expert

Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline

Posta o código do insert e do select.

Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".

Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM
luBS
JavaBaby

Membro desde: 10/05/2006 14:00:27
Mensagens: 86
Localização: São Paulo
Offline

É tudo uma questão de vc saber o que e quais sql's estão executando

Primeiro, antes de você fazer uma alteração, leia sobre isso:
http://en.wikipedia.org/wiki/SQL_injection

Seu sistema esta cheio, tudo errado.

Agora verifique esse código:



Perceba que ira imprimir: aaaa 'null', logo seu código:



Caso tf_tombo.getText() esteja retornando nulo, ele está criando o SQL: Select * From cad_estoque Where Tombo = 'null', ou seja, procurando por um tombo com a string "null" e não necessariamente com valor nulo.

Isso vai acontecer também lá no seu insert, você não esta inserindo nulo no valor de tombo e sim a string "null", como o campo deve ser unicle, só pode haver um registro com tombo "null", por isso no próximo da erro.

Reveja todo seu código, se você entender o primeiro código do meu post (do aaaa somando com null) vai entender fácil que problema esta ocorrendo no seu sistema.

Meu conselho, leia sobre sql inject, elimine eles usando PreparedStatement, tanto no insert quanto nos select's, valide que no seu banco esta incluindo nulo mesmo, que então todos seus problemas se resolvem.... tá fácil, basta vc entender qual está sendo o problema


http://luizroos.blogspot.com/
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team