é o seguinte, chamo uma função do banco, ele retorna o número certo, mas na hora do teste ele não cai na condição que deveria cair! MUITOOOO ESQUESITO!
O usuário que estou logado é do tipo 3! debugando, quando chego na linha if(TipoUsuario1 == 3)
a variavel TipoUsuario1 está valendo 3! e não cai dentro do if! MUITOO ESQUESITO, o que pode ser?
Valeu galera pela ajuda, mas fiz os dois testes e ainda nada!
No banco de dados o tipo de dado é smallint, deveria usar então short certo?
eu usei, e acontece o mesmo problema, o bagulho retorna 3, mas não cai dentro do if!
Muito impossível isso, to ficando nervoso aqui! rsrs. =(
é o seguinte, chamo uma função do banco, ele retorna o número certo, mas na hora do teste ele não cai na condição que deveria cair! MUITOOOO ESQUESITO!
O usuário que estou logado é do tipo 3! debugando, quando chego na linha if(TipoUsuario1 == 3)
a variavel TipoUsuario1 está valendo 3! e não cai dentro do if! MUITOO ESQUESITO, o que pode ser?
Obrigado[/quote]
E isso , tens de evitar esse Parse ai no meio … ou usa Int ou use short
cara, pode ser que o código executando não seja exatamente correspondente ao fonte que você está editando. Dá um clean no seu projeto e compila novamente.
if(rs.next()){
System.out.println(rs.getShort("camposhort"));
}
//aqui vc verifica se tem alguma coisa no result set, se cair no if vc faz outro teste
if(rs.next()){
System.out.println("aqui eh o if do meu rs");
if(rs.getShort("camposhort") == 1){
System.out.println("o rs.next retornou 1");
}
}
Desta maneira vc vai testar se o seu rs.next() realmente tem alguma coisa e se tiver ele vai cair no segundo if…
é o seguinte, chamo uma função do banco, ele retorna o número certo, mas na hora do teste ele não cai na condição que deveria cair! MUITOOOO ESQUESITO!
O usuário que estou logado é do tipo 3! debugando, quando chego na linha if(TipoUsuario1 == 3)
a variavel TipoUsuario1 está valendo 3! e não cai dentro do if! MUITOO ESQUESITO, o que pode ser?
Obrigado[/quote]
E isso , tens de evitar esse Parse ai no meio … ou usa Int ou use short[/quote]
isso não é parse, é cast. São coisas completamente diferentes. De qualquer maneira, se ele declara a variável como short o cast é feito implicitamente na comparação.
ResultSet rsTipo = usuario.GetTipoUsuarioByIdUsuario(idUsuario, request.getRemoteHost());
if(rsTipo.next())
{
short idTipo = rsTipo.getShort(1);
}
//aqui vc verifica se tem alguma coisa no result set, se cair no if vc faz outro teste
if(rsTipo.next())
{
if(rsTipo.getShort("idTipo") == 3)
{
String a = "";
}
}
ele cai no primeiro, passa pela linha onde armazena o getShort, mas no segundo if não entra!
obs: a condição do segundo é igual do primeiro! o que explica isso?
TOMA NO *** viu!
E obrigado a todos pela ajuda, e espero que continuem. stress! rsrs
Errado.
Se o teu SQL, devolve uma linha, no primeiro if devolve true e fica a apontar para essa linha. Fazendo novamente o if, e como não há mais linha nenhuma, devolve false.
Isso não dá certo. Quando você faz uma chamada ao método next() do ResultSet ele avança o cursor para o próximo registro, de forma que duas chamadas seguidas a next() não retornam o mesmo resultado, necessariamente.
Tenta esse código:
ResultSet rsTipo = usuario.GetTipoUsuario(idUsuario, request.getRemoteHost());
if(rsTipo.next()) {
short tipoUsuario1 = rsTipo.getShort(1);
if( tipoUsuario1 == (short) 3 ) {
String aa = "";
String aa112 = "";
String aa2 = "";
}else{
throw new RuntimeException("tipo de usuário inválido: " + tipoUsuario1);
}
}else{
throw new RuntimeException("tipo de usuário não encontrado");
}
o fato é que com o código acima ou ele entra no if ou ele dispara a exceção. Se ela não for capturada e ignorada em algum lugar, ela tem que no mínimo aparecer no log do servidor. De qualquer maneira, eu desconfio que código que está no servidor está desatualizado.
Não sei exatamente como funciona isso. mas é isso, quando o kra clica no botao editar, vai redireciona pra essa parte do if ai! e tdo acontece ai dentro!!
Voltando no problema, eu vou debugando e tudo vai acontecendo direitinho!
quando ele cai na linha que compara se a variavel é igual a 3, ele pula pro final do mode, não cai em nenhuma exception nem nada!
meu deus! fiz a função de consulta, ela retorna normalmente o valor. POREM, quando passo para a proxima linha, ele ja pula pro final do mode!
MEU DEUSSSSSSSSSSSSSSSSSSSSSSSSSSSS!
que issoooo…
short rsTipo = usuario.GetTipous(idUsuario, request.getRemoteHost());
String a = "";
String a1 = "";
Ele vai pra função, faz tudo direitinho o valor que retorna fica valendo 3, que eh o que deveria ser mesmo. quando ele volta ele nao chega nem na segunda linha
String a = "";
Ou seja, o problema não é no if! nem na consulta! estou certo?