sql >> Databáze >  >> RDS >> Oracle

Proč byla požadována neplatná konverze KÓD CHYBY:17132?

Dokumentace Oracle JDBC říká:

Pokud nejsou klíčové sloupce explicitně uvedeny, ovladače Oracle JDBC nemohou určit, které sloupce je třeba načíst. Když je použit název sloupce nebo pole indexu sloupce, mohou ovladače Oracle JDBC určit, které sloupce obsahují automaticky generované klíče, které chcete načíst. Když však Statement.RETURN_GENERATED_KEYS je použit příznak celého čísla, ovladače Oracle JDBC nemohou tyto sloupce identifikovat. Když je použit příznak celého čísla k označení, že mají být vráceny automaticky vygenerované klíče, ROWID pseudo sloupec je vrácen jako klíč. ROWID lze pak načíst z ResultSet objekt a lze jej použít k načtení dalších sloupců.

Neuvádíte sloupce (jak je znázorněno v jejich ukázkovém kódu), takže načítáte ROWID; pokoušíte se to získat pomocí getInt() způsobuje chybu, kterou vidíte. (Ve skutečnosti vidím Invalid column type: getInt not implemented for class oracle.jdbc.driver.RowidAccessor ERROR CODE: 17004 ale myslím, že to souvisí s jinou verzí ovladače).

Musíte zadat sloupec, který získá automaticky vygenerovanou hodnotu. Pokud se nazývá MEETING_ID pak byste udělali:

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

... předávání pole sloupců – v tomto případě pouze jednoho – namísto příznaku RETURN_GENERATED_KEYS.

rs.getInt(1) poté načte tuto číselnou hodnotu.




  1. Závažná chyba PHP:Třída 'PDO' nebyla nalezena

  2. Vytvoření webové aplikace od nuly pomocí Python Flask a MySQL:Část 2

  3. Jak odebrat „X Rows Selected“ v SQLcl &SQL*Plus (Oracle)

  4. Jak zobrazit aktuální připojení v MySQL Workbench pomocí GUI