Como saber se o array é nulo ou vazio
Pessoal, preciso de uma ajuda.
Uso o código abaixo para fazer atualização dos dados vindos de uma tabela com diversos ids, ou seja tenho um campo na tabela com um checkbox(id) e quando eleciono envio os dados dos outrso campos para atualização.
O problema está quando um dos campos está com o valor vazio ou nulo, sempre acontece um exception.
Não sei como verificar se o array está vazio ou nulo antes de entrar na clausula FOR.
Alguém pode me auxiliar com isso?
Obrigado
Marcos
String[] nome = (String[]) request.getParameterMap().get("name"+id);
for (String id : request.getParameterValues("id")){ //Aqui vai vir os ids numa lista String[] nome = (String[]) request.getParameterMap().get("name"+id); for (String nome1 : nome) { out.println(nome1); Conexao.stm.executeUpdate("UPDATE usuarios SET nome='"+nome1+"' where id ='"+id+"'"); } String[] address = (String[]) request.getParameterMap().get("address"+id); for (String end : address) { out.println(end); Conexao.stm.executeUpdate("UPDATE usuarios SET end='"+end+"' where id ='"+id+"'"); } }
Marcos
Curtidas 0
Melhor post
Carlos Heuberger
16/10/2011
[quote="Marcos_rhs"]Pessoal, preciso de uma ajuda.
Uso o código abaixo para fazer atualização dos dados vindos de uma tabela com diversos ids, ou seja tenho um campo na tabela com um checkbox(id) e quando eleciono envio os dados dos outrso campos para atualização.
O problema está quando um dos campos está com o valor vazio ou nulo, sempre acontece um exception.
Não sei como verificar se o array está vazio ou nulo antes de entrar na clausula FOR.
[b]String[] nome = (String[]) request.getParameterMap().get("name"+id); [/b]
Alguém pode me auxiliar com isso?
for (String id : request.getParameterValues("id")){ //Aqui vai vir os ids numa lista
String[] nome = (String[]) request.getParameterMap().get("name"+id);
for (String nome1 : nome) {
out.println(nome1);
Conexao.stm.executeUpdate("UPDATE usuarios SET nome='"+nome1+"' where id ='"+id+"'");
}
String[] address = (String[]) request.getParameterMap().get("address"+id);
for (String end : address) {
out.println(end);
Conexao.stm.executeUpdate("UPDATE usuarios SET end='"+end+"' where id ='"+id+"'");
}
}
Obrigado
Marcos
Agora não sei o que é para testar:
1) o problema: testar se é um campo (qual?) - "um dos campos está com o valor vazio ou nulo"; ou
2) o que você quer saber: testar um dos arrays (qual?) - "o array está vazio ou nulo"
de modo geral
1) String campo = ... if (campo == null) { // é nulo } if (campo.isEmpty) { // só funciona se não nulo // é vazio } // ou o contrário e junto if (campo != null && !campo.isEmpty()) { // nem nulo nem vazio }
String[] array = ... if (array == null) { // é nulo } if (array.length == 0) { // vazio } // ou o contrário e junto if (array != null && array.length > 0) { // nem nulo nem vazio }
GOSTEI 1
Mais Respostas
Marcos
15/10/2011
Obrigado Simu pela dica...
Simu sempre posto da maneira correta, mas ontem na pressa acabei postando da maneira errada.
Sobre minha dúvida é que preciso passar pelo FOR e atualizar a informação sempre, ou seja se o campo que carrega o array vier vazio ou nulo preciso que atribua um valor 0 para que entre na clausula FOR e atualize a informação com o valor 0. É possível fazer isso?
Se vier nulo ou vazio:
preciso que seja atribuído 0
Obrigado
Marcos
request.getParameterMap().get("name"+id) == null;
request.getParameterMap().get("name"+id) = 0;
for (String id : request.getParameterValues("id")){ //Aqui vai vir os ids numa lista String[] valor = (String[]) request.getParameterMap().get("valor"+id); for (String valor1 : valor) { out.println(nome1); Conexao.stm.executeUpdate("UPDATE usuarios SET valor='0' where id ='"+id+"'"); } }
GOSTEI 0
Carlos Heuberger
15/10/2011
[quote="Marcos_rhs"]Obrigado Simu pela dica...
Simu sempre posto da maneira correta, mas ontem na pressa acabei postando da maneira errada.
Sobre minha dúvida é que preciso passar pelo FOR e atualizar a informação sempre, ou seja se o campo que carrega o array vier vazio ou nulo preciso que atribua um valor 0 para que entre na clausula FOR e atualize a informação com o valor 0. É possível fazer isso?
Se vier nulo ou vazio:
preciso que seja atribuído 0
Obrigado
Marcos
acho que não entendi corretamente... principalmente o último exemplo esta me confundindo.
Para a primeira parte tem que chamar os métodos correspondentes conforme o que for retornado pelo getParameterMap.
Por exemplo, se for um Map<String, String>, ficaria assim:
request.getParameterMap().get("name"+id) == null;
request.getParameterMap().get("name"+id) = 0;
for (String id : request.getParameterValues("id")){ //Aqui vai vir os ids numa lista String[] valor = (String[]) request.getParameterMap().get("valor"+id); for (String valor1 : valor) { out.println(nome1); Conexao.stm.executeUpdate("UPDATE usuarios SET valor='0' where id ='"+id+"'"); } }
String name = request.getParameterMap().get("name"+id); if (name == null || name.isEmpty) { request.getParameterMap().put("name"+id, "0"); }
GOSTEI 0
Marcos
15/10/2011
Simu, minha intenção é atualizar vários campos de uma só vez..
Na minha tabela tenho 03 colunas, uma com um checkbox para cada ID onde seleciono as linhas que quero atualizar e atualizo os campos.
O problema é quando um campo está vazio, dá NullPointerException.
Preciso que mesmo que os campos estejam vazios atualize a informação. No último exemplo optei por atribuir o valor 0 caso o campo da linha selecionada venha vazio ou null.
Depois do último post fiz assim, está funcionando mas acredito que não seja a melhor maneira.
Obrigado
Marcos
for (String id : request.getParameterValues("id")){ //Aqui vai vir os ids numa lista String[] nome = (String[]) request.getParameterMap().get("name"+id); if (nome == null) {int nome1 = 0{ Conexao.stm.executeUpdate("UPDATE usuarios SET nome='"+nome1+"' where id ='"+id+"'"); }else{ for (String nome1 : nome) { out.println(nome1); Conexao.stm.executeUpdate("UPDATE usuarios SET nome='"+nome1+"' where id ='"+id+"'"); } } String[] address = (String[]) request.getParameterMap().get("address"+id); if (address== null) {int end= 0{ Conexao.stm.executeUpdate("UPDATE usuarios SET end='"+end+"' where id ='"+id+"'"); }else{ for (String end : address) { out.println(end); Conexao.stm.executeUpdate("UPDATE usuarios SET end='"+end+"' where id ='"+id+"'"); } } }
GOSTEI 0
Carlos Heuberger
15/10/2011
ainda está meio estranho:
em princípio esta substituindo uma lista - normalmente vários valores - por um simples valor (se for nulo).
Isso indica um problema de lógica.
O seguinte laço confirma isso:
como o id não muda nesse laço, está sempre atualizando o mesmo registro, prevalencendo o último valor setado...
[[]]
for (String nome1 : nome) { Conexao.stm.executeUpdate("UPDATE usuarios SET nome='"+nome1+"' where id ='"+id+"'"); }
GOSTEI 0
Marcos
15/10/2011
ok Simu,
Mas eu só entro no FOR mencionado na sua mensagem se o campo não estiver nulo.
Se estiver nulo atribuo o valor 0 e atualizo, caso não seja nulo atualizo com o valor que recebi do campo da linha qe foi selecionado referente aou ID qe recebi.
Como você faria, alguma dica?
Marcos
GOSTEI 0