I have 3 different CRITERIA_TYPES. I, X & XA. I have the code below to set Booleans dependant on the value of ColumnValueS which is retrieved CHAR(3) column in MYSQL. if (columnValueS.toString().equals("I")) works as i would expect. However it then proceeds to enter the "XA" condition check as well when the value of ColumnValueS is "I"!
If I replace with a switch stmt it works (see below)
Why is this??
while(true) {
Boolean include = false, absolute = false;
for (int i = 1; i <= numColumns; i++) {
String columnValueS = null;
String columnName = rsMetaData.getColumnName(i); // Iterate through column names
if (rsMetaData.getColumnType(i) == java.sql.Types.CHAR){
columnValueS = rs.getString(columnName);
}
switch (columnName.toUpperCase())
{
case "CRITERIA_TYPE":
System.out.println(" columnName " + columnName + "columnValueS " + columnValueS);
System.out.println(" columnValueS.len " + columnValueS.length());
if (columnValueS.toString().equals("I"))
{
System.out.println("columnValueS I " + columnValueS);
include = true;
}
if (columnValueS.trim().equals("XA"));
{
System.out.println("columnValueS XA " + columnValueS);
absolute = true;
}
break;
case "CRITERIA_VALUE":
if (include)
inc.add(columnValueS);
else
{
exclusion e = new exclusion(columnValueS,absolute);
excl.add(e);
}
break;
default: break;
}
System.out.println("include " + include);
System.out.println("absolute " + absolute);
}
if (!rs.next())
break;
}
This works:
switch (columnValueS){
case "I":
System.out.println("Case I " + columnValueS);
include = true;
break;
case "X":
System.out.println("Case X ");
break;
case "XA":
System.out.println("Case XA " + columnValueS);
absolute = true;
break;
default: break;
}
Aucun commentaire:
Enregistrer un commentaire