# SQL Statement mit Switch-Case funktioniert nicht



## legalizeSINCE88 (11. Jul 2014)

Hallo,

habe folgenden Code:


```
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


----------



## VfL_Freak (11. Jul 2014)

Moin,

was ist denn "groupOp" ???:L

Gruß
Klaus


----------



## Deros (11. Jul 2014)

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....


----------



## legalizeSINCE88 (11. Jul 2014)

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


----------



## Deros (11. Jul 2014)

legalizeSINCE88 hat gesagt.:


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



in welcher Welt gibt es denn eine solche Syntax?

und dein eigentliches Problem ist halt die falsche Nutzung der Map


----------



## legalizeSINCE88 (11. Jul 2014)

Deros hat gesagt.:


> in welcher Welt gibt es denn eine solche Syntax?
> 
> und dein eigentliches Problem ist halt die falsche Nutzung der Map




--->wie wäre denn dann die richtige Nutzung einer Map - wenn nicht so?!


----------



## Deros (11. Jul 2014)

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 


```
where += (" " + groupOp + " " + field + feldOperator);
```


----------

