Het probleem is dat de eerste kolom een numeriek gegevenstype is, maar uw voorbereide instructie levert een string/VARCHAR-gegevenstype op. Het statement wordt uitgevoerd zoals het is, er is geen mogelijkheid voor Oracle om uw gebruik van nextval te converteren om de reekswaarde te krijgen.
Hier is een alternatief via Java's PreparedStatement-syntaxis:
sql = "INSERT INTO USER
(USER_PK, ACCOUNTNUMBER, FIRSTNAME, LASTNAME, EMAIL )
VALUES
(user.nextval, ?, ?, ?, ?)";
ps = conn.prepareStatement(sql);
ps.setString(1, accountNumber);
ps.setString(2, firstName);
ps.setString(3, lastName);
ps.setString(4, email);
Dit veronderstelt dat user
is een bestaande reeks -- wijzig deze naar wens.