sql >> Databasteknik >  >> RDS >> Oracle

.nextval JDBC-infogningsproblem

Problemet är att den första kolumnen är en numerisk datatyp, men ditt förberedda uttalande skickar en sträng/VARCHAR-datatyp. Uttrycket körs som det är, det finns ingen möjlighet för Oracle att konvertera din användning av nextval för att få sekvensvärdet.

Här är ett alternativ via Javas PreparedStatement-syntax:

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

Detta förutsätter att user är en befintlig sekvens -- ändra till färg.




  1. SQL Server (localdb)\v11.0 förklaras

  2. Skillnaden mellan ett JDBC-uttalande och ett förberett uttalande

  3. Hur CTE kan hjälpa till att skriva komplexa, kraftfulla frågor:ett prestationsperspektiv

  4. Fel:INSERT EXEC-satsen kan inte kapslas. och Kan inte använda ROLLBACK-satsen i en INSERT-EXEC-sats. Hur löser man detta?