suchen mit unbekannten werten

Status
Nicht offen für weitere Antworten.

Antiga

Mitglied
Hallo,

lese aus einem Gui werte aus die ein User für eine Suche in einer Datenbank eingibt. Jetzt hab ich zb Vorname und nachname aber es muss keines von beiden eine Eingabe enthalten.
Wie mach ich das jetzt, dass ich nicht 100 search Methoden (search(Vorname), search(Nachname), search(Vorname, Nachname) schreiben muss?

Danke für jede Hilfe
 

void

Mitglied
Hi Antiga,

am besten schreibst du dir eine eigene Klasse z.B. SearchParameters die alle möglichen Parameter für deine Suche enthält und die du je nach Bedarf füllst. Dadurch brauchst du nur noch eine Methode search(SearchParameters) in der du dann die Paramter auswertest.

/void
 
Zuletzt bearbeitet:

Antiga

Mitglied
hmmm.... die hab ich ja eigentlich schon weil ich eine entity mit gettern und settern hab, aber ich muss das ja irgendwie im sql-query lösen.
Weil angenommen ich hab einen mitarbeiter m und ich übergeb ihn dem search(m). und im search hab ich dann die sql-query drin (und natürlich die Verbindung zur datenbank). wenn jetzt aber der zb Vorname nicht gesetzt ist - also null oder ein leerer String - wie mach ich das dann? ich kann ja nich 100 sql abfragen schreiben.
Also bsp
Select * From mitarbeiter WHERE vorname = m.getVorname() AND nachname = m.getNachname();

Danke
 
Zuletzt bearbeitet:

Antiga

Mitglied
achso ich bin ein Depp, ich kann ja den query-String ganz einfach konkatenieren. Also:
if(vorname!=null) dann query += m.getVorname()

Denkt ihr das passt so oder gibts da einen besseren Weg, weil das scheint mir ein wenig fehleranfällig :)
 

JanHH

Top Contributor
Es wird etwas unklar was Du eigentlich tun willst. Soweit ich das verstehe: Je mehr Such-Parameter man eingibt, um so genauer eingegrenzt wird die Suche. Wenn man nur als Nachname "b" eingibt, kommen alle, die als Nachname "b" haben, und wenn man auch noch als Vormane "a" eingibt, kommen alle, die als Vorname a und als Nachname b haben.

Da musst Du halt den query-String entsprechend zusammenbauen.. für alle Parameter, wo eine Eingabe erfolgt ist, ein "where xxx = yyy". Aber darau bist Du ja anscheinend auch schon selber gekommen.
 

hdi

Top Contributor
[HIGHLIGHT="Java"]class ParamContainer{

private Map<String,String> params;

public ParamContainer(){
params = new HashMap<String,String>();
}

public void put(String property, String value){
params.put(property,value);
}

public Map getParams(){
return params;
}
}[/HIGHLIGHT]

[HIGHLIGHT="Java"]// in deiner Such-Methode erstellst du dir einen Parameter-Container und legst
// dort die Parameter rein, die in der GUI angegeben wurden, Bsp
// (das Auslesen der GUI kann und sollte man auch noch dynamischer gestalten,
// damit das ganze hier auch einen echten Vorteil bringt)
ParamContainer myParams = new ParamContainer();
String enteredVorname = gui.getVornameField().getText();
if(enteredVorname != null && !enteredVorname.isEmpty()){
myParams.put("vorname",enteredVorname);
}
// usw, dann:
StringBuilder query = new StringBuilder();
query.append( "SELECT * FROM MITARBEITER");
Map<String,String> params = myParams.getParams();
// das folgende is nich so elegant gecodet, ist nur hingerotzt. Aber die Idee ist:
int count = 0;
for(String key : params.keySet()){
query.append(count == 0 && count != params.keySet().size()-1 ? " WHERE " : " AND ");
query.append(key+"="+params.get(key));
count++;
}
query.append(";");
String sqlQuery = query.toString();
[/HIGHLIGHT]
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Slaylen Java List Suchen mit eigenem Generischen Datentyp Datenbankprogrammierung 10
J In einer bestimmten Spalte suchen mit Suchfeld (MS SQL) Datenbankprogrammierung 7
T JPA: Nach String statt Primärschlüssel suchen Datenbankprogrammierung 9
T MySQL Dynamisch Suchen Select Datenbankprogrammierung 4
S MySQL Wortteile suchen Datenbankprogrammierung 6
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
G Suchen von Zahlen in einem Textfeld / SQL Server Datenbankprogrammierung 1
G Suchen nach Autowerten in Access-DB Datenbankprogrammierung 20
R Nach String in MySQL datenbank suchen Datenbankprogrammierung 7
F Stringteil suchen in MySQL Datenbankprogrammierung 7
G Problem mit Suchen Statement Java und MS-SQL-Server Datenbankprogrammierung 9
E SQL-Statement um eine Nummer in der Datenbank zu suchen Datenbankprogrammierung 3
D MySQL Abfrage mit kumulierten Werten Datenbankprogrammierung 16
I Tabelle mit "|" getrennten Werten -> einzelnen Wert davon abfragen Datenbankprogrammierung 15
S Als Rückgebewert eine Liste von Werten? Datenbankprogrammierung 3
A Auslesen von Werten aus der DB in eine csv-Datei Datenbankprogrammierung 4
K Hibernate: Liste von String-Werten Datenbankprogrammierung 2
W JComboBox mit Access DB Werten füllen Datenbankprogrammierung 5
K Problem beim Einlesen von Werten aus einem Textfeld Datenbankprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben