Duvida sobre sintaxe[resolvido]

6 respostas
G

Bom dia estou com a seguinte duvida de sintaxe

O operador ? (nao sei se eh realmente um operador ) faz o seguinte caso o rs.Grupal.getString for diferente de null coloca o texto entre aspas simples caso contrario joga null??

StringBuffer insert = new StringBuffer(); insert.append((rsGrupal.getString("COD_ORIGEM") != null ? "'"+rsGrupal.getString("COD_ORIGEM").trim()+"'":"null")+",");

6 Respostas

Andre_Fonseca

guialeixo:
Bom dia estou com a seguinte duvida de sintaxe

O operador ? (nao sei se eh realmente um operador ) faz o seguinte caso o rs.Grupal.getString for diferente de null coloca o texto entre aspas simples caso contrario joga null??

StringBuffer insert = new StringBuffer(); insert.append((rsGrupal.getString("COD_ORIGEM") != null ? "'"+rsGrupal.getString("COD_ORIGEM").trim()+"'":"null")+",");

Sim, é chamado operador ternário

Esse código acima faz o mesmo que

if (rsGrupal.getString("COD_ORIGEM") != null) { insert.append(rsGrupal.getString("COD_ORIGEM").trim()); else { insert.append("null"); }

G

Muito obrigado ^^

ViniGodoy
Acho que esse é um dos poucos casos que o ganho de legibilidade com uma variável temporária compensa a existência dessa variável:
String codOrigem = rsGrupal.getString("COD_ORIGEM");

StringBuffer insert = new StringBuffer();  
insert.append(codOrigem == null ? "null" : "'"+ codOrigem.trim() +"'"))
      .append(",");
Outra coisa. Não some com + dentro de um stringBuilder. Você está criando um StringBuilder justamente pra não concatenar strings usando o sinal de "+".

Também me parece errado você ter que dar trim() na leitura do seu BD. Por que já não faz um trim() no cadastro do dado?
Outra possibilidade seria fazer o trim() diretamente no SQL, mas acho que esse tipo de operação não deveria sequer existir na leitura.

G
ViniGodoy:
Acho que esse é um dos poucos casos que o ganho de legibilidade com uma variável temporária compensa a existência dessa variável:
String codOrigem = rsGrupal.getString("COD_ORIGEM");

StringBuffer insert = new StringBuffer();  
insert.append(codOrigem == null ? "null" : "'"+ codOrigem.trim() +"'"))
      .append(",");
Outra coisa. Não some com + dentro de um stringBuilder. Você está criando um StringBuilder justamente pra não concatenar strings usando o sinal de "+".

Também me parece errado você ter que dar trim() na leitura do seu BD. Por que já não faz um trim() no cadastro do dado?
Outra possibilidade seria fazer o trim() diretamente no SQL, mas acho que esse tipo de operação não deveria sequer existir na leitura.

é que eu to interpretando o codigo para o meu chefe, fazendo uma documentação do que que o codigo faz nao foi eu que o fiz =) mas muito obrigado pela dica irei lembrar

pmlm

ViniGodoy:

Também me parece errado você ter que dar trim() na leitura do seu BD. Por que já não faz um trim() no cadastro do dado?
Outra possibilidade seria fazer o trim() diretamente no SQL, mas acho que esse tipo de operação não deveria sequer existir na leitura.

Isso depende da BD.
Já tive muitas dores de cabeça por causa disso. Trabalho com uma BD que não é da minha responsabilidade (Informix) e os campos foram criados como CHAR mesmo quando deveriam ser VARCHAR.
Ao ler “OLA” de dentro de um CHAR (6) ele vai devolver "OLA   ".

G

pmlm:
ViniGodoy:

Também me parece errado você ter que dar trim() na leitura do seu BD. Por que já não faz um trim() no cadastro do dado?
Outra possibilidade seria fazer o trim() diretamente no SQL, mas acho que esse tipo de operação não deveria sequer existir na leitura.

Isso depende da BD.
Já tive muitas dores de cabeça por causa disso. Trabalho com uma BD que não é da minha responsabilidade (Informix) e os campos foram criados como CHAR mesmo quando deveriam ser VARCHAR.
Ao ler “OLA” de dentro de um CHAR (6) ele vai devolver "OLA   ".

Isso é um job e ele ta executando normal, entao no que esta funcionando nao se meche mto ne, a estrutura do banco nao conheço

Criado 18 de dezembro de 2009
Ultima resposta 18 de dez. de 2009
Respostas 6
Participantes 4