Hallo Community
Ich hab ein Problem, dass für euch sicher sehr schnell lösbar ist, aber ich steck da gerade ziemlich fest
Damit ihr genau wisst worum es geht, erklär ich es mal kurz.
Ich habe eine Datenbank, die Kunden, Bodyguards und die damit zusammenhängenden Auftrage verwaltet. (Kunden können Bodyguards buchen usw)
Es handelt sich dabei um die in Netbeans integrierte Derbydatenbank.
Bisher kann ich Kunden und Bodyguards in vollem Umfang verwalten.
Ich bin gerade am Entwickeln der GUI für die Auftragsverwaltung.
Die sieht bis jetzt so aus:
Ihr seht nun die 3 Comboboxen.
Bei "Einsatzarten" stehen 3 Werte drinnen. (Wie hier der erste Wert "Personenschutz").
Er definiert die Art des Einsatzes.
Die Bodyguards in der Datenbank haben ebenfalls diese Werte, dir ihr Spezialgebiet beschreiben.
Di
Nun das Problem.
-Ich möchte nun erreichen, dass wenn ich bei der ersten Combobox beispielsweiße "Personenschutz" auswähle, in der Combobox darunter NUR die Bodyguards (mit Vor und Nachname) angezeigt werden, die ebenfalls "Personenschutz" als ihr Spezialgebiet haben.(männlich/weiblich war nur zum Test)
-In der Personencombobox sollen alle Kunden in der DB angezeigt werden.
(Da es ein kleiner Kundenkreis sein wird, wird das kein Problem sein)
Damit ihr euch besser eindenken könnt, hier ein wenig Code und die Struktur:
So, jetzt müsste eben noch die Gui-Klasse Zur Auftragserstellung geschrieben werden.
Die grafische Oberfläche steht (in der Alpha version ) (siehe oben).
Das Problem ist jetzt eben nur, das mit den Komboboxen..
Ich dachte mir. ich könnte die toString Methode der Bodyguard-Klasse überschreiben, sodass ich die komplette Liste an Bodyguards dann in die Gui-Klasse holen kann, und dann nach Spezialgebiet "filtern" kann. Aber wie ?
Hier zur einfacheren Vorstellung noch die Bodyguardtabelle der DB
Wisst ihr weiter?
Das wäre spitze!
Ich hab ein Problem, dass für euch sicher sehr schnell lösbar ist, aber ich steck da gerade ziemlich fest
Damit ihr genau wisst worum es geht, erklär ich es mal kurz.
Ich habe eine Datenbank, die Kunden, Bodyguards und die damit zusammenhängenden Auftrage verwaltet. (Kunden können Bodyguards buchen usw)
Es handelt sich dabei um die in Netbeans integrierte Derbydatenbank.
Bisher kann ich Kunden und Bodyguards in vollem Umfang verwalten.
Ich bin gerade am Entwickeln der GUI für die Auftragsverwaltung.
Die sieht bis jetzt so aus:
Ihr seht nun die 3 Comboboxen.
Bei "Einsatzarten" stehen 3 Werte drinnen. (Wie hier der erste Wert "Personenschutz").
Er definiert die Art des Einsatzes.
Die Bodyguards in der Datenbank haben ebenfalls diese Werte, dir ihr Spezialgebiet beschreiben.
Di
Nun das Problem.
-Ich möchte nun erreichen, dass wenn ich bei der ersten Combobox beispielsweiße "Personenschutz" auswähle, in der Combobox darunter NUR die Bodyguards (mit Vor und Nachname) angezeigt werden, die ebenfalls "Personenschutz" als ihr Spezialgebiet haben.(männlich/weiblich war nur zum Test)
-In der Personencombobox sollen alle Kunden in der DB angezeigt werden.
(Da es ein kleiner Kundenkreis sein wird, wird das kein Problem sein)
Damit ihr euch besser eindenken könnt, hier ein wenig Code und die Struktur:
Java:
package Personen;
import java.util.Date;
public class Kunde extends Personen {
private int kNr;
public Kunde(int kNr, String vorname,String nachname, String geschlecht, Date geburtstag, int handynummer, String mail) {
super(vorname, nachname, geschlecht, geburtstag, handynummer, mail);
this.kNr = kNr;
}
public Kunde(String vorname,String nachname, String geschlecht, Date geburtstag, int handynummer, String mail) {
super(vorname, nachname, geschlecht, geburtstag, handynummer, mail);
}
public int getkNr() {
return kNr;
}
public void setkNr(int kNr) {
this.kNr = kNr;
}
}
Java:
package Personen;
import java.util.Date;
/**
*
* @author Marc
*/
public class Bodyguard extends Personen {
private String einsatzgebiet;
private int jahreBerufserfahrung;
private double stundenlohn;
private int bNr;
/**
*
* @param bNr Bodyguard ID
* @param einsatzgebiet Personenschützer, Türsteher, Real-Estate Security
* @param verbucht Bereits im Dienst?
* @param jahreBerufserfahrung Wie lange ist der BG schon "dabei"?
* @param stundenlohn
* @param vorname
* @param geschlecht
* @param geburtstag
* @param handynummer
* @param mail
*/
public Bodyguard(int bNr, String vorname,String nachname, String einsatzgebiet, int jahreBerufserfahrung, double stundenlohn, String geschlecht, Date geburtstag, int handynummer, String mail) {
super(vorname, nachname, geschlecht, geburtstag, handynummer, mail);
this.einsatzgebiet = einsatzgebiet;
this.jahreBerufserfahrung = jahreBerufserfahrung;
this.stundenlohn = stundenlohn;
this.bNr = bNr;
}
public Bodyguard(String vorname,String nachname, String einsatzgebiet, int jahreBerufserfahrung, double stundenlohn, String geschlecht, Date geburtstag, int handynummer, String mail) {
super(vorname, nachname, geschlecht, geburtstag, handynummer, mail);
this.einsatzgebiet = einsatzgebiet;
this.jahreBerufserfahrung = jahreBerufserfahrung;
this.stundenlohn = stundenlohn;
}
public int getbNr() {
return bNr;
}
public void setbNr(int bNr) {
this.bNr = bNr;
}
public String getEinsatzgebiet() {
return einsatzgebiet;
}
public void setEinsatzgebiet(String einsatzgebiet) {
this.einsatzgebiet = einsatzgebiet;
}
public int getJahreBerufserfahrung() {
return jahreBerufserfahrung;
}
public void setJahreBerufserfahrung(int jahreBerufserfahrung) {
this.jahreBerufserfahrung = jahreBerufserfahrung;
}
public double getStundenlohn() {
return stundenlohn;
}
public void setStundenlohn(double stundenlohn) {
this.stundenlohn = stundenlohn;
}
}
Java:
package Datenbank;
import Personen.Auftrag;
import Personen.Bodyguard;
import Personen.Kunde;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Date;
import java.util.*;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author schsim10
*/
public class Datenhaltung {
private static Datenhaltung manager;
ArrayList<Kunde> kunden;
ArrayList<Bodyguard> bodyguards;
private String dbTreiber = "org.apache.derby.jdbc.EmbeddedDriver";
private String dbURL = "jdbc:derby:" + System.getProperty("user.dir") + "\\BodyguardEskortService";
private PreparedStatement dbBefehl;
private Connection dbVerbindung;
public static Datenhaltung getManager() {
if (manager == null) { //der manager existiert noch nicht
manager = new Datenhaltung();
}
return manager;
}
private Datenhaltung() {
}
public void initDB() {
try {
Class.forName(dbTreiber);
dbVerbindung = DriverManager.getConnection(dbURL, "bodyguard", "bodyguard");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public void neuerKundeAnlegen(Kunde kunde) {
try {
dbBefehl = dbVerbindung.prepareStatement("INSERT INTO APP.KUNDE (VORNAME, NACHNAME, MAIL, GEBURTSTAG, GESCHLECHT, HANDYNUMMER) VALUES (?,?,?,?,?,?)");
dbBefehl.setString(1, kunde.getVorname());
dbBefehl.setString(2, kunde.getNachname());
dbBefehl.setString(3, kunde.getMail());
dbBefehl.setDate(4, new Date(kunde.getGeburtstag().getTime()));
dbBefehl.setString(5, kunde.getGeschlecht());
dbBefehl.setInt(6, kunde.getHandynummer());
dbBefehl.executeUpdate();
// ResultSet ergebnis = dbBefehl.getGeneratedKeys();
// kunde.setkNr(ergebnis.getInt(1));
// ergebnis.close();
dbBefehl.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void bearbeiteKunde(Kunde kunde) {
try {
dbBefehl = dbVerbindung.prepareStatement("UPDATE APP.KUNDE SET VORNAME = ?, NACHNAME = ?, MAIL = ?, GEBURTSTAG = ?, GESCHLECHT = ?, HANDYNUMMER = ? WHERE KUNDENNUMMER = ?");
dbBefehl.setString(1, kunde.getVorname());
dbBefehl.setString(2, kunde.getNachname());
dbBefehl.setString(3, kunde.getMail());
dbBefehl.setDate(4, new Date(kunde.getGeburtstag().getTime()));
dbBefehl.setString(5, kunde.getGeschlecht());
dbBefehl.setInt(6, kunde.getHandynummer());
dbBefehl.setInt(7, kunde.getkNr());
dbBefehl.executeUpdate();
dbBefehl.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void loescheKunde(Kunde kunde) {
try {
dbBefehl = dbVerbindung.prepareStatement("DELETE FROM APP.KUNDE WHERE KUNDENNUMMER = ?");
dbBefehl.setInt(1, kunde.getkNr());
dbBefehl.execute();
dbBefehl.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ArrayList<Kunde> leseAlleKunde() {
ArrayList<Kunde> kundenListe = new ArrayList<>();
try {
dbBefehl = dbVerbindung.prepareStatement("SELECT * FROM APP.KUNDE");
ResultSet ergebnis = dbBefehl.executeQuery();
while (ergebnis.next()) {
int kundennummer = ergebnis.getInt(1);
String vorname = ergebnis.getString(2);
String nachname = ergebnis.getString(3);
String geschlecht = ergebnis.getString(6);
java.util.Date geburtsdatum = ergebnis.getDate(5);
int handynummer = ergebnis.getInt(7);
String eMail = ergebnis.getString(4);
kundenListe.add(new Kunde(kundennummer, vorname, nachname,geschlecht, geburtsdatum,handynummer, eMail));
}
dbBefehl.close();
ergebnis.close();
} catch (SQLException e) {
e.printStackTrace();
}
return kundenListe;
}
/////////
public void neuerBodyguardAnlegen(Bodyguard bodyguard) {
try {
dbBefehl = dbVerbindung.prepareStatement("INSERT INTO APP.BODYGUARD (VORNAME, NACHNAME, GESCHLECHT, HANDYNUMMER, GEBURTSTAG, EINSATZGEBIET, BERUFSERFAHRUNG, STUNDENLOHN, MAIL) VALUES (?,?,?,?,?,?,?,?,?)");
dbBefehl.setString(1, bodyguard.getVorname());
dbBefehl.setString(2, bodyguard.getNachname());
dbBefehl.setString(9, bodyguard.getMail());
dbBefehl.setDate(5, new Date(bodyguard.getGeburtstag().getTime()));
dbBefehl.setString(3, bodyguard.getGeschlecht());
dbBefehl.setInt(4, bodyguard.getHandynummer());
dbBefehl.setString(6, bodyguard.getEinsatzgebiet());
dbBefehl.setInt(7, bodyguard.getJahreBerufserfahrung());
dbBefehl.setDouble(8, bodyguard.getStundenlohn());
dbBefehl.executeUpdate();
// ResultSet ergebnis = dbBefehl.getGeneratedKeys();
// kunde.setkNr(ergebnis.getInt(1));
// ergebnis.close();
dbBefehl.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void bearbeiteBodyguard(Bodyguard bodyguard) {
try {
dbBefehl = dbVerbindung.prepareStatement("UPDATE APP.BODYGUARD SET VORNAME = ?, NACHNAME = ?, MAIL = ?, GEBURTSTAG = ?, GESCHLECHT = ?, HANDYNUMMER = ?, BERUFSERFAHRUNG = ?, EINSATZGEBIET =?, STUNDENLOHN = ? WHERE KUNDENNUMMER = ?");
dbBefehl.setString(1, bodyguard.getVorname());
dbBefehl.setString(2, bodyguard.getNachname());
dbBefehl.setString(3, bodyguard.getMail());
dbBefehl.setDate(4, new Date(bodyguard.getGeburtstag().getTime()));
dbBefehl.setString(5, bodyguard.getGeschlecht());
dbBefehl.setInt(6, bodyguard.getHandynummer());
dbBefehl.setInt(7, bodyguard.getJahreBerufserfahrung());
dbBefehl.setString(8, bodyguard.getEinsatzgebiet());
dbBefehl.setDouble(9, bodyguard.getStundenlohn());
dbBefehl.setInt(10, bodyguard.getbNr());
dbBefehl.executeUpdate();
dbBefehl.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void loescheBodyguard(Bodyguard bodyguard) {
try {
dbBefehl = dbVerbindung.prepareStatement("DELETE FROM APP.KUNDE WHERE KUNDENNUMMER = ?");
dbBefehl.setInt(1, bodyguard.getbNr());
dbBefehl.execute();
dbBefehl.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ArrayList<Bodyguard> leseAlleBodyguards() {
ArrayList<Bodyguard> BodyguardListe = new ArrayList<>();
try {
dbBefehl = dbVerbindung.prepareStatement("SELECT * FROM APP.KUNDE");
ResultSet ergebnis = dbBefehl.executeQuery();
while (ergebnis.next()) {
int bodyguardnummer = ergebnis.getInt(1);
String vorname = ergebnis.getString(2);
String nachname = ergebnis.getString(3);
String geschlecht = ergebnis.getString(4);
int handynummer = ergebnis.getInt(5);
java.util.Date geburtsdatum = ergebnis.getDate(6);
String einsatzgebiet = ergebnis.getString(7);
int berufserfahrung = ergebnis.getInt(8);
Double stundenlohn = ergebnis.getDouble(9);
String eMail = ergebnis.getString(10);
BodyguardListe.add(new Bodyguard (bodyguardnummer, vorname, nachname, einsatzgebiet,berufserfahrung,stundenlohn,geschlecht,geburtsdatum,handynummer, eMail));
}
dbBefehl.close();
ergebnis.close();
} catch (SQLException e) {
e.printStackTrace();
}
return BodyguardListe;
}
///////
public void neuerAuftragAnlegen(Auftrag auftrag) {
try {
dbBefehl = dbVerbindung.prepareStatement("INSERT INTO APP.AUFTRAEGE (BG_GEBUCHT_AM, GEBUCHT_BIS, BG_NUMMER, K_NUMMER, EINSATZART, EINSATZEINNAHMEN, RISIKOZUSCHLAG, EINSATZKOSTEN) VALUES (?,?,?,?,?,?,?,?)");
dbBefehl.setDate(1, new Date(auftrag.getVon().getTime()));
dbBefehl.setDate(2, new Date(auftrag.getBis().getTime()));
dbBefehl.setInt(3, auftrag.getBodyguard().getbNr());
dbBefehl.setInt(4, auftrag.getKunde().getkNr());
dbBefehl.setString(5, auftrag.getEinsatzArt());
dbBefehl.setDouble(6, auftrag.getEinsatzEinnahmen());
dbBefehl.setDouble(7, auftrag.getRisikozuschlag());
dbBefehl.setDouble(8, auftrag.getEinsatzkosten());
dbBefehl.executeUpdate();
// ResultSet ergebnis = dbBefehl.getGeneratedKeys();
// kunde.setkNr(ergebnis.getInt(1));
// ergebnis.close();
dbBefehl.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ArrayList<Auftrag> leseAlleAuftraege() {
ArrayList<Auftrag> auftragListe = new ArrayList<>();
String sqlQuery = "SELECT * FROM APP.AUFTRAEGE INNER JOIN APP.KUNDE ON APP.AUFTRAEGE.K_NUMMER = APP.KUNDE.KUNDENNUMMER INNER JOIN APP.BODYGUARD ON APP.AUFTRAEGE.BG_NUMMER = APP.BODYGUARD.BODYGUARD_ID ;";
try {
dbBefehl = dbVerbindung.prepareStatement(sqlQuery);
ResultSet ergebnis = dbBefehl.executeQuery();
while (ergebnis.next()) {
////////////////
int kundennummer = ergebnis.getInt("KUNDENNUMMER");
String kvorname = ergebnis.getString("VORNAME");
String knachname = ergebnis.getString("NACHNAME");
String kgeschlecht = ergebnis.getString("GESCHLECHT");
java.util.Date kgeburtsdatum = ergebnis.getDate("GEBURTSDATUM");
int khandynummer = ergebnis.getInt("HANDYNUMMER");
String kMail = ergebnis.getString("MAIL");
Kunde kunde = new Kunde(kundennummer, kvorname, knachname, kgeschlecht, kgeburtsdatum, khandynummer, kMail);
///////////////
int bodyguardnummer = ergebnis.getInt("BODYGUARD_ID");
String bvorname = ergebnis.getString("VORNAME");
String bnachname = ergebnis.getString("NACHNAME");
String einsatzgebiet = ergebnis.getString("EINSATZGEBIET");
int berufserfahrung = ergebnis.getInt("BERUFSERFAHRUNG");
double stundenlohn = ergebnis.getDouble("STUNDENLOHN");
String bgeschlecht = ergebnis.getString("GESCHLECHT");
java.util.Date bgeburtsdatum = ergebnis.getDate("GEBURTSDATUM");
int bhandynummer = ergebnis.getInt("HANDYNUMMER");
String bMail = ergebnis.getString("MAIL");
Bodyguard bodyguard = new Bodyguard(bodyguardnummer, bvorname, bnachname,einsatzgebiet,berufserfahrung,stundenlohn, bgeschlecht, bgeburtsdatum, bhandynummer, bMail);
////////////////
int auftragsnummer = ergebnis.getInt("AUFTRAGSNUMMER");
Date von = ergebnis.getDate("BG_GEBUCHT_AM");
Date bis = ergebnis.getDate("GEBUCHT_BIS");
String einsatzart = ergebnis.getString("EINSATZART");
Double einsatzeinnahmen = ergebnis.getDouble("EINSATZEINNAHMEN");
double risikozuschlag = ergebnis.getDouble("RISIKOZUSCHLAG");
double kosten = ergebnis.getDouble("EINSATZKOSTEN");
Auftrag auftrag = new Auftrag(kunde, bodyguard,von, bis,einsatzart, einsatzeinnahmen,risikozuschlag,kosten);
auftragListe.add(auftrag);
}
dbBefehl.close();
ergebnis.close();
} catch (SQLException e) {
e.printStackTrace();
}
return auftragListe;
}
}
So, jetzt müsste eben noch die Gui-Klasse Zur Auftragserstellung geschrieben werden.
Die grafische Oberfläche steht (in der Alpha version ) (siehe oben).
Das Problem ist jetzt eben nur, das mit den Komboboxen..
Ich dachte mir. ich könnte die toString Methode der Bodyguard-Klasse überschreiben, sodass ich die komplette Liste an Bodyguards dann in die Gui-Klasse holen kann, und dann nach Spezialgebiet "filtern" kann. Aber wie ?
Hier zur einfacheren Vorstellung noch die Bodyguardtabelle der DB
Wisst ihr weiter?
Das wäre spitze!
Zuletzt bearbeitet: