G
Guest
Gast
Hallo,
ich schreibe gerade ein Programm zur Datenverwaltung.
Mein Problem ist nun, dass beim Löschen eines vorhandenen Datensatzes auch dann gelöscht wird, wenn es die ID gar nicht gibt:
Es wird also anhand einer eingegebenen Kundennummer ein Datensatz ausgelesen und dieser soll dann gelöscht werden. Ich dachte nun halt, dass wenn es die Kundennummer nicht gibt, das ResultSet NULL wäre?! Aber ist es anscheinend nicht, denn er springt immer in den else-Zweig, der if-Anweisung.
Wie kann ich das denn sonst abfangen?
Außerdem habe ich noch folgendes Problem:
Ich habe noch einen Teil, der einen vorhandenen Datensatz verändert - also ein Update!
Ich lasse also eine Kundennummer oder auch einen Namen eingeben und der User muss dann aber auch alle Felder füllen, egal ob sie neu sind oder nicht (wusste nicht wie ich das sonst machen soll - also überpüfen welche Felder geändert wurden! Vielleicht hat auch hier jemand einen Tipp?!)
Wenn ich aber alle Felder ausgefüllt habe und Enter drücke, kommt folgende Meldung:
Exception in thread "main" java.lang.NullPointerException
at stammdatenverwaltung.customer.main(test.java:148)
(Habe die betreffende Zeile gekennzeichnet!
Ich hoffe, ihr könnt mir helfen?!
Danke schon mal
ich schreibe gerade ein Programm zur Datenverwaltung.
Mein Problem ist nun, dass beim Löschen eines vorhandenen Datensatzes auch dann gelöscht wird, wenn es die ID gar nicht gibt:
Code:
System.out.println("Löschen eines vorhandenen Datensatzes!");
con = utils.getConnection();
con.setAutoCommit(false);
System.out.println("Bitte geben Sie die Kundennummer des Datensatzes ein, den Sie löschen möchten: ");
String aknummer = stdin.readLine();
String query = "select * from test where test_id = " + aknummer;
System.out.println(query);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
if(rs == null)
System.out.println("Die eingegebene Kundennummer ist nicht vorhanden!");
else
{
stmt.executeUpdate("Delete from test where test_id =" + aknummer);
con.commit();
System.out.println("Der Datensatz der Kundennummer " + aknummer + " wurde erfolgreich gelöscht!");
}
Es wird also anhand einer eingegebenen Kundennummer ein Datensatz ausgelesen und dieser soll dann gelöscht werden. Ich dachte nun halt, dass wenn es die Kundennummer nicht gibt, das ResultSet NULL wäre?! Aber ist es anscheinend nicht, denn er springt immer in den else-Zweig, der if-Anweisung.
Wie kann ich das denn sonst abfangen?
Außerdem habe ich noch folgendes Problem:
Ich habe noch einen Teil, der einen vorhandenen Datensatz verändert - also ein Update!
Code:
System.out.println("Verändern eines bestehenden Datensatzes!");
System.out.println("Bitte geben Sie eine Kundennummer und/oder einen Namen ein: ");
String eingabe = stdin.readLine();
System.out.println("Geben Sie einen neuen Vor- und Nachnamen ein: ");
String name_neu = stdin.readLine();
System.out.println("Geben Sie eine neue Stadt ein: ");
String stadt_neu = stdin.readLine();
System.out.println("Geben Sie eine neue Postleitzahl ein: ");
String plz_neu = stdin.readLine();
System.out.println("Geben Sie eine neue Strasse ein: ");
String strasse_neu = stdin.readLine();
[color=red]Statement stmt = con.createStatement(); // Zeile 148[/color]
stmt.executeUpdate("Update test set name='" + name_neu + "' ,stadt= '" + stadt_neu + "', plz=" + plz_neu + ", strasse= '" + strasse_neu + "' where test_id=" +eingabe);
con.commit();
Ich lasse also eine Kundennummer oder auch einen Namen eingeben und der User muss dann aber auch alle Felder füllen, egal ob sie neu sind oder nicht (wusste nicht wie ich das sonst machen soll - also überpüfen welche Felder geändert wurden! Vielleicht hat auch hier jemand einen Tipp?!)
Wenn ich aber alle Felder ausgefüllt habe und Enter drücke, kommt folgende Meldung:
Exception in thread "main" java.lang.NullPointerException
at stammdatenverwaltung.customer.main(test.java:148)
(Habe die betreffende Zeile gekennzeichnet!
Ich hoffe, ihr könnt mir helfen?!
Danke schon mal