Java - NO COMPARA STRINGS

   
Vista:

NO COMPARA STRINGS

Publicado por Monik (5 intervenciones) el 10/08/2010 18:21:21
Hola a tod@s,

estoy desarrollando una aplicación en Java la cual consume una base de datos. Principalmente el problema lo tengo en el siguiente trozo de código:

rset2=conexion_ORIGEN.createStatement().executeQue ry("SELECT CAMPO1 FROM TABLA1 WHERE TORIGEN='"+TOrigen+"' AND TDESTINO='"+TDestino+"' " + "AND ESTADO=1");

int j = 0;
while (rset2.next()){
listado.insertElementAt(rset2.getString(j+1),j);
//listado está declarado como:
//private static Vector listado = new Vector();
j++;
}

if (listado.elementAt(0).equals("RESULTADO"))
System.out.println("COINCIDEN");

El problema radica en que si bien en la tabla se ha guardado "RESULTADO" cuando hago la comparación con dicho valor no es capaz de detectarlo. Me hace sospechar que realmente no se esté guardando como un String... Pero no debería ser así ya que a partir de la consulta se está almacenando un tipo String. Así pues, ¿cómo debería efectuar la comparación para conseguir comparar con un determinado String o bien cómo debería capturarlo?

Y cabe destacar que la columna CAMPO1 se encuentra definida en la BD como NCHAR(10).

He probado varias posibilidades pero no he tenido éxito en ninguna de ellas... Por ejemplo trabajando con LinkedList en vez de Vector:
LinkedList lista = new LinkedList();
while (rset2.next()){
lista.add(rset2.getString(j+1)); //También he probado: lista.add(rset2.getObject(j+1))
}

Iterator it = lista.iterator();
while (it.hasNext()){
if (it.next().toString().equals("RESULTADO")) //También he probado: (it.next()=="RESULTADO")
System.out.println("COINCIDEN");
}

Pero en ninguno de estos casos es capaz de detectar que son iguales... Aunque por pantalla tienen el mismo valor...

Gracias y saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:NO COMPARA STRINGS

Publicado por James (207 intervenciones) el 10/08/2010 18:44:01
El problema es que el dato es de longitud 10 y RESULTADO solo 9 en la DB si no lo defines como VARCHAR te rellena con espacios al final, podrias hacer un trim() para eliminarlos y comparar luego o modificar la DB para ahorrar espacio, Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO COMPARA STRINGS

Publicado por mario (622 intervenciones) el 10/08/2010 19:20:21
Ademas el metodo equals es sensible a mayusculas y minusculas

otra opcion es equalsIgnoreCase
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO COMPARA STRINGS

Publicado por mayrita (163 intervenciones) el 10/08/2010 20:35:39
prueba poniendo tambien al estado = 1
estado = '1'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar