# Problem mit MySQL-Datenbank und Java-Applet



## Firestorm (15. Jun 2004)

Erstmal Hallo,

ich hab ein kleines Problem, ich muss eine Adressbuchverwaltung als Java-Applet realisieren. Das ganze soll mit MySQL funktionieren und folgende Funktionen haben: Neu anlegen, bearbeiten, löschen und ein Button zum Reload der Liste.

Das Applet soll in ein Anzeigefenster (das ich mit einer Liste gemacht habe), in dem die Einträge sichtbar sind, und den Buttons aufgeteilt sein. Das ganze habe ich mit diversen LayoutManagern gemacht, dort gab es keine Probleme.

Bei den Buttons "Neu anlegen" und "Bearbeiten" oeffnet sich ein Frame, dass 7 Textfelder hat (Name, Vorname, Strasse, Nr, Plz, Ort, Tel).

Die Einträge aus der Datenbank in der Liste anzeigen klappt schon, genauso wie der Reload der Liste.
"Neu anlegen" war kein Problem, doch wie kann ich Daten aus einer Datenbank herausholen und in meine TextFelder in "Bearbeiten" einfügen. Ich muss ja erstmal schauen, welcher Eintrag aktuell in der Liste ausgewählt ist...

Wenn ich ein ResultSet mache und diesen Code: 

```
txtName.setName(result.getString("Name"));
txtVorname.setName(result.getString("Vorname"));
txtStrasse.setName(result.getString("Strasse"));
txtNr.setName(result.getString("Nr"));
txtPlz.setName(result.getString("Plz"));
txtOrt.setName(result.getString("Ort"));
txtTel.setName(result.getString("Tel"));
```

benutze, müsste es normalerweise doch gehen oder?!
und wie kann ich dann die Einträge auch wieder genau an der selben Stelle in der DB speichern?

Für "Löschen" kann ich ja den Index der Liste mit " 'Locale Variable' = 'Listenname'.getSelectedIndex()" auslesen. Wie kann ich dann den Eintrag in der Datenbank, der denselben Index hat löschen?

Ich hoffe, das es einigermaßen verständlich ist, was ich hier geschrieben habe und dass ihr mir helfen könnt. 
Kann den kompletten Code nicht posten, da 400+ Zeilen wohl doch ein bisschen zu viel sind ;-)
Wenn jemand bestimmte teile braucht oder so, einfach sagen ich schaun dann wa sich machen lässt.
Schonmal danke und viele Grüße
Firestorm


----------



## alpi (15. Jun 2004)

zu: und wie kann ich dann die Einträge auch wieder genau an der selben Stelle in der DB speichern? 

Deine Tabellen haben doch einen Primary-Key. Du nimmst diesen Schlüssel um ein Update auf diese Tabelle auszuführen.


```
UPDATE deineTabelle SET deineSpalte = 'wasauchimmer' WHERE deinPrimaryKey = 'dieZeileDieDuÄnmdernMöchtest'
```

Das gleiche Vorgehen gilt auch für das DELETE. Schau dir einfach mal die SQL-Befehle an


zu: "Für "Löschen" kann ich ja den Index der Liste mit " 'Locale Variable' = 'Listenname'.getSelectedIndex()" auslesen. Wie kann ich dann den Eintrag in der Datenbank, der denselben Index hat löschen? "

Ich würde nie einen Index aus einer Liste mit einer Datenbankzeile in Beziehung bringen. Das kann schnell in die Hose gehen. Versuche Vernünftigen Schlüssel zu bilden zum Beispiel aus Name und Vorname. Ansonsten musst du einfach nur ein DELETE Befehl bilden und als Bediennung (WHERE) deinen Primary-Key einsetzen.


----------



## Firestorm (15. Jun 2004)

ok, danke ich hab jetzt einfach Den Eintrag aus der Liste mit split in ein String-Array gespeichert und überprüfe dieses dann mit den Daten in der DB, mit AND verknüpft ist so auch sicher gestellt, dass keine anderen Datensätze versehentlich "mitgelöscht" werden.

Jetzt is fast alles fertig.

Gruß Fire


----------

