Datensätze einfügen oder verändern
Bislang haben wir nur Daten aus unserer Schülertabelle abgefragt - was wenn eine neue Schülerin hinzukommt, deren Daten in die Datenbank eingefügt werden sollen?
in phpmyadmin konnte man das über die Weboberfläche erledigen, wie das mit SQL Statements geht, kannst du hier nachlesen, wenn du dich nicht erinnerst.
Es gibt zwei Möglichkeiten, Datensätze einzufügen:
Man gibt für jede Tabellenspalte in der Reihenfolge der Spalten einen Wert an:
INSERT INTO tabelle VALUES('wert1','wert2',...)
oder man legt zunächst fest, welche Datenbankattribute "befüllt" werden sollen, indem man die Feldliste zuerst übergibt:
INSERT INTO tabelle (column1, column2, column3, ...) VALUES (value1, value2, value3, ...)
Nicht angegebene Spalten werden dann mit ihrem Standardwert befüllt, das kann auch ein Auto-Inkrement wert sein.
(A1)
Bewerte die beiden Vorgehensweisen und entscheide, welche Methode dir geeigneter erscheint. Begründe deine Wahl.
(A2)
Erweitere den Code im Branch insert
des Schülerlisten-Projekts um die Methode schulerAnlegen(String vorname, String nachname, int klasse, String geschlecht, String mail, String geburtstag)
, mit der neue Schüler in die Datenbank eingefügt werden können. Verwende PreparedStatements um die Angriffsfläche für SQL-Injections zu verkleinern.
Den Wert für den Geburtstag musst du mit dem Befehl
// Ersetzungnummer, Konvertierter String statement.setDate(8, java.sql.Date.valueOf(geburtstag));
setzen. Das Danetbankfeld ist nämlich vom Typ date
, es muss also ein Date übergeben werden, du gibst den Parameter für die Funktion aber als String an, das muss also zunächst konvertiert werden. Auslassen kann man keinen der Werte, da die Datenbank NULL-Werte nicht erlaubt.