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
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:
Jetzt bekomme ich ein Problem mit der ResultSet.updateRow Methode. Zu Debug-Zwecken habe ich die System.out.println Aufrufe eingebaut
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?
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?