sql >> Database teknologi >  >> RDS >> Oracle

Hvorfor ugyldig konvertering anmodet om FEJLKODE:17132?

Oracle JDBC-dokumentationen siger:

Hvis nøglekolonner ikke er eksplicit angivet, kan Oracle JDBC-drivere ikke identificere, hvilke kolonner der skal hentes. Når et kolonnenavn eller kolonneindeksarray bruges, kan Oracle JDBC-drivere identificere, hvilke kolonner der indeholder autogenererede nøgler, som du vil hente. Men når Statement.RETURN_GENERATED_KEYS heltalsflag bruges, kan Oracle JDBC-drivere ikke identificere disse kolonner. Når heltalsflaget bruges til at angive, at autogenererede nøgler skal returneres, vises ROWID pseudo kolonne returneres som nøgle. ROWID kan derefter hentes fra ResultSet objekt og kan bruges til at hente andre kolonner.

Du angiver ikke kolonnerne (som vist i deres eksempelkode), så du henter ROWID; forsøger at få det med getInt() forårsager den fejl, du ser. (Jeg ser faktisk Invalid column type: getInt not implemented for class oracle.jdbc.driver.RowidAccessor ERROR CODE: 17004 men jeg tror, ​​det skyldes en anden driverversion).

Du skal angive den kolonne, der får den automatisk genererede værdi. Hvis det hedder MEETING_ID så ville du gøre:

    String returnCols[] = { "MEETING_ID" };
    preparedStatement = dbConnection.prepareStatement(insertTableSQL, returnCols);

... passerer rækken af ​​kolonner - kun én i dette tilfælde - i stedet for RETURN_GENERATED_KEYS-flaget.

rs.getInt(1) vil derefter hente den numeriske værdi.




  1. SYSUTCDATETIME() vs GETUTCDATE() i SQL Server:Hvad er forskellen?

  2. Parse JSON i TSQL

  3. MySQL Ligesom flere værdier

  4. Om fordelene ved sorterede stier