Oracle
 sql >> Base de données >  >> RDS >> Oracle

Problème d'insertion JDBC .nextval

Le problème est que la première colonne est un type de données numérique, mais votre instruction préparée soumet un type de données chaîne/VARCHAR. L'instruction est exécutée telle quelle, Oracle n'a aucune possibilité de convertir votre utilisation de nextval pour obtenir la valeur de la séquence.

Voici une alternative via la syntaxe PreparedStatement de Java :

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);

Cela suppose que user est une séquence existante -- modifiez-la en conséquence.