Comparacion de String con equals

Hola, estoy trabajando con un applet el cual llama constantemente a una clase que tiene un método que le devuelve un registro especifico de una tabla de la base de datos por ejemplo, si necesito el atributo recurso que esta el 3er registro de la tabla llamo al método de esta forma: p.recurso(3), el cual consulta a la BD y devuelve un String del recurso ubicado en la fila n°3 de la tabla... Bueno la cosa es que después cuando quiero comparar si el valor que devolvió es igual a otro String no me resulta.. Lo hago así:
import bd.Prueba;
public class aver {
public static void main(String[] args) {
Prueba p= new Prueba();
// TODO Auto-generated method stub
String valor="hola";
if(p.recurso(1).equals(valor))
System.out.println("Son Iguales");
}
}

De esta forma no me dice que son iguales, yo se que p.recurso(1) tiene que devolver el valor "hola", pero no resulta, debería mostrar "Son Iguales"... Ahora si hago la comparación así: if("hola".equals("hola")) SI medice que son iguales, y si la hago así:
if(recurso(1).equals(recurso(1))) TB dice que son iguales, pero no de la forma
if(recurso(1).equals("hola")) A pesar que el metodo recurso(1) devuelve un String y que "hola" tb es un String....¿que podra ser???

1 respuesta

Respuesta
1
Pues lo más normal, es guardar lo que te devuelve siempre una consulta a base de datos en variables locales, y no tirar del valor directo de la base de datos, porque no controlamos si ese valor es el correcto o esta tomando la referencia.
Como buena practica, lo que se hace es crear una clase con los mismos atributos que devuelve la consulta y crear un objeto por cada elemento de la base de datos, y manejar todos esos objetos en locas, con esto solo tienes una consulta a la base de datos, por lo que minimizas uso de memoria, cpu, recursos, etc, y también mantienes la homogeneidad puesto que esos datos en variables locales no van cambiar.
En tu caso, como solo quieres un dato, pues guardalo en un String nuevo y manéjalo en adelante.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas