SQL Statement mit Switch-Case funktioniert nicht

Hallo,

habe folgenden Code:

Java:
       String feldOperator;

	switch (operator) {
			case "eq":
				feldOperator = " = " + fielddata;
				break;
			case "ne":
				feldOperator = " != " + fielddata;
				break;
			case "lt":
				feldOperator = " < " + fielddata + "";
				break;
			case "gt":
				feldOperator = " > " + fielddata + "";
				break;
			case "le":
				feldOperator = " <= " + fielddata + "";
				break;
			case "ge":
				feldOperator = " >= " + fielddata + "";
				break;
			case "nu":
				feldOperator = " = ";
				break;
			case "nn":
				feldOperator = " != ";
				break;
			case "in":
				feldOperator = " IN (" + fielddata + ")";
				break;
			case "ni":
				feldOperator = " NOT IN " + fielddata + "";
				break;
			case "bw":
				feldOperator = " LIKE " + fielddata + "%";
				break;
			case "bn":
				feldOperator = " NOT LIKE " + fielddata + "%";
				break;
			case "ew":
				feldOperator = " LIKE %" + fielddata + "";
				break;
			case "en":
				feldOperator = " NOT LIKE %" + fielddata + "";
				break;
			case "cn":
				feldOperator = " LIKE %" + fielddata + "%";
				break;
			case "nc":
				feldOperator = " NOT LIKE %" + fielddata + "%";
				break;
			case "to":
				feldOperator = " < " + fielddata + "";
				break;
			case "fr":
				feldOperator = " > " + fielddata + "";
				break;
			default:
				feldOperator = "";
				break;
			}
			if (feldOperator != "") {

				map.put(field, feldOperator);
				System.out.println(map);

			}
			if (map.size() > 0) {
				where += (" " + groupOp + " " + map); // AND 'ID'(fieldName)
														// LIKE(fieldOperation)
														// fieldData;
				System.out.println("In der WHERE: " + where);
			}
			else
			{
				where = "";
				System.out.println("In der WHERE_1: " + where);
			}


Gebe ich WHERE in der Konsole aus so erhalte ich diese Syntax:

In der WHERE: where AND {Nachname= = a}


sprich ich erhalte 2 gleichheitszeichen.

Würde ich bspw. UNGLEICH wählen so würde da stehen:

In der WHERE: where AND {Nachname= != a}[/B]

Was muss ich tun, damit ich also das erste Gleichheitszeichen wegbekomme?


Vielen Dank
 
Zuletzt bearbeitet:
ich würde schätzen groupOp ist ein String mit dem Wert "and".

Interessant fand ich im ersten Moment die geschweiften Klammern, bis mir klar wurde das die von der Map kommen.
Du rufst dort ja eigentlich dann die toString() Methode von einer HashMap(?) auf. Die in dem Moment nur einen eintrag hat.
field mit dem Wert "Nachname" und feldOperator mit "= a". Die HashMap gibt als String immer etwas im Format {"Key"="Value"}zurück und daher kommt auch dein zusätzliches Gleichheitszeichen.

Was hast du überhaupt mit der Map vor? Sobald du mehr als einen Eintrag bekommst wird das doch dann eh Kraut und Rüben....
 
Hi vielen Dank bis dahin : )
'groupOp' beinhaltet die Operatoren.

Zur Erklärung:

Ich habe eine Tabelle worind er User einzelen Spalten durchsuchen kann.
Z.B. Vorname UND Nachname.
Bei Vorname wählt er "enthält" welchem das kürzel 'in" zugrordnet ist.
Möchte er nun also Nachname = 'Hans' und Vorname enthält 'Pe' suchen, so würde das in etwa so aussehen:

"Where Nachname = 'Hans' AND 'Pe' IN ( Vorname )"

Das funktioniert aber gerade nicht.
Einzelne Abfragen sind kein Problem jedoch die Verkettung
 
Zuletzt bearbeitet:
Was hast du mit der map denn überhaupt vor? Ich könnte dir jetzt zeigen was mit einer Map geht, aber ich weiß ja nicht was du damit wirklich vor hast. Aus irgendeinem Grund machst du ja nicht einfach

Java:
where += (" " + groupOp + " " + field + feldOperator);
 

Neue Themen


Zurück
Oben