Derby/JavaDB updateRow Problem

vasx

Neues Mitglied
Hallo, ich habe mir als Aufwärmübung eine kleine Datenbankanwendung geschrieben (Java + Netbeans).

Die Derby Datenbank heiist SimpleOrderDB und enthält die beiden Tabellen Customers und Orders
Das Java Programm ist eine Swing-Anwendung, IO über JTextField und JComboBox Controls

Definition der Tabelle Customers

Code:
CREATE TABLE vas.customers
      (
          cst_id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1,
                                                                INCREMENT BY 1),
          name VARCHAR(50) NOT NULL,
          location VARCHAR(50),
          email VARCHAR(50),
          PRIMARY KEY (cst_id)
      );

Das Programm funktioniert soweit

In dem Programm, das ich eigentlich schreiben will, möchte ich aber keinen Autoincrement PK verwenden, so dass ich jetzt folgendes ausprobiert habe:

Code:
CREATE TABLE vas.customers
      (
          cst_id INTEGER NOT NULL ,
          name VARCHAR(50) NOT NULL,
          location VARCHAR(50),
          email VARCHAR(50),
          PRIMARY KEY (cst_id)
      );

Jetzt bekomme ich ein Problem mit der ResultSet.updateRow Methode. Zu Debug-Zwecken habe ich die System.out.println Aufrufe eingebaut

Java:
           int id = Integer.parseInt(txtCustomerID.getText());
            String name = txtCustomerName.getText();
            String location = txtCustomerLocation.getText();
            String email = txtCustomerEMail.getText();
           
            rsCustomers.updateInt("cst_id", id);
            rsCustomers.updateString("name", name);        // Update des Record
            rsCustomers.updateString("location", location);
            rsCustomers.updateString("email", email);
           
            System.out.println("+++ " + rsCustomers.getString("name"));  // Debug
            rsCustomers.updateRow();   
            System.out.println("+++ " + rsCustomers.getString("name"));  // Debug

Nach Eingabe bspw. eines neuen Namens wird dieser auch korrekt in den (das?) ResultSet übernommen. Nach dem updateRow wird aber der alte Name wieder ausgegeben (und in dem entsprechneden JTextField angezeigt)!

Wenn ich das Programm nun schliesse und wieder neu starte wird der neue Name angezeigt!

Sehr spooky, wie gesagt mit einem autoincrement PK habe ich das Problem nicht.

Vielleicht hat hier jemand eine Idee?
 

Neue Themen


Zurück
Oben