Donnerstag, 24. Mai 2012


Artikel

Juli 2010 | Artikel

MySQL und Java: Datenabfrage Fortsetzung, Teil 3

Teil 1   Teil 2   Teil 3   

Einen neuen Datensatz einfügen

Nun müssen wir die zuvor geschriebene Methode nur noch benutzen. Zu Testzwecken schreiben wir nun Code, der ein Kundenobjekt in die Datenbank einfügt. Dafür verwende ich wieder die Main-Methode. In unserer Methode "saveKunde" aus der IOManager-Klasse haben wir definiert, dass wir den Tabellennamen (in dem wir etwas einfügen wollen) und das einzufügende Objekt vom Typ Kunde benötigen. Den Tabellennamen bauen wir in unsere "INSERT INTO"-Anweisung ein. Das Kundenobjekt wird mit den GETTER-Methoden ausgelesen und als Wert in die Datenbank gespeichert.

Den IOManager brauchen wir natürlich ebenfalls wieder (ich habe den alten Quellcode komplett entfernt), damit wir eine Verbindung und ein SQL-Statement ausführen können.

  1. Iom = new IOManager();

Das Kundenobjekt mit der Kundennummer 3000, dem Vornamen "Susanne" und den Nachname "Wolter".

  1. Kunde neuerKunde = new Kunde(3000, „Susanne“, „Wolter“);

Im nächsten Schritt sollte man die Verbindung mit der Methode connectToMysql aufbauen. Schlägt diese Fehl, so wird mittels "return" die Methode abgebrochen.

  1. If(iom.connectToMysql(„vmdb“, „kunde“, „root“, „password“) == false){
  2. return;
  3. }

Nun können wir die Methode saveKunde aufrufen. Als Parameter übergeben wir den Tabellennamen sowie das Kundenobjekt neuerKunde:

  1. Iom.saveKunde(„kunden“, neuerKunde);

Dies waren auch schon die ganzen Schritte. Nun befindet sich in unserer Datenbank eine Frau Wolter. Hier der Beweis:

  1. Vector kunden = iom.loadCustomers(„kunden“);
  2. Enumeration e = kunden.elements();
  3. While(e.hasMoreElements()){
  4. Kunde x = (Kunde) e.nextElement();
  5. System.out.println(x);
  6. }

Die Zeilen oberhalb holen alle Datensätze der Tabelle "kunden" und zeigen Sie auf der Standardausgabe an:

Die gesamte Klasse nochmals im Überblick (auch hier wieder der Hinweis: es wurde mit Paketen gearbeitet):

  1. package javamysql;
  2. import java.util.Enumeration;
  3. import java.util.Vector;
  4. public class Main {
  5. IOManager iom;
  6. public static void main(String[] args) {
  7. new Main().start();
  8. }
  9. private void start(){
  10. //der Code, zum Einfügen eines neuen Kunden:
  11. iom = new IOManager();
  12. if(iom.connectToMysql("vm", "kunde", "root", "passwd") == false){
  13. return;
  14. }
  15. Kunde neuerKunde = new Kunde(3000, "Susanne", "Wolter");
  16. iom.saveKunde("kunden", neuerKunde);
  17. //Hier werden Daten abgefragt und auf der Standardausgabe ausgegeben
  18. Vector kunden = iom.loadCustomers("kunden");
  19. Enumeration e = kunden.elements();
  20. while(e.hasMoreElements()){
  21. Kunde x = (Kunde) e.nextElement();
  22. System.out.println(x);
  23. }
  24. }
  25. }
Christian Barthel macht eine Ausbildung zum Informatikkaufmann. Neben den Themen der Programmierung mit Java beschäftigt er sich ebenfalls mit Linux, Perl und infrastrukturellen Themen wie z. B. Backup, Dokumentmanagement mit Alfresco und Virtualisierung mit KVM, Xen und VMware. Durch seine Offenheit steht er sehr gerne mit anderen Menschen in Kontakt und tauscht Wissen über seine Interessensgebiete aus: christian.barthel@online.de

Teil 1   Teil 2   Teil 3   

andere Artikel dieser Serie

Kommentare

Gravatar Michael Vitz 21.07.2010
um 11:50 Uhr
An für sich finde ich die Artikel Serie gut, aber ist es beabsichtigt, dass die verwendeten Klassen teilweise alt sind?
[z.B. Vector (und dann noch ohne Generics) anstelle von List oder, while(! result.isAfterLast()) anstelle von while(result.next()) oder auch der verwendete Klassenname des JDBC Drivers (das war im letzen Artikel)]
#zitieren
Gravatar as 21.07.2010
um 13:05 Uhr
Dank Garbage Collection braucht man sich in Java fast nie ums Aufräumen kümmern - bei JDBC (insbesondere ResultSets) ist das anders. Viele Objekte müssen explizit und auch im Fehlerfall freigegeben werden (close()), um die dahinterliegenden Ressourcen (Cursor, etc.) freizugeben. Leider hat es bislang keines der mir bekannte Tutorials geschafft, das nötige Exception Handling zu zeigen - so auch dieses. Schade ums "Papier"! #zitieren