Oracle
 sql >> база данни >  >> RDS >> Oracle

Защо е поискано невалидно преобразуване КОД НА ГРЕШКА:17132?

Документацията на Oracle JDBC казва:

Ако ключовите колони не са изрично посочени, тогава драйверите на Oracle JDBC не могат да идентифицират кои колони трябва да бъдат извлечени. Когато се използва име на колона или индекс на колона, драйверите на Oracle JDBC могат да идентифицират кои колони съдържат автоматично генерирани ключове, които искате да извлечете. Когато обаче Statement.RETURN_GENERATED_KEYS използва се целочислен флаг, драйверите на Oracle JDBC не могат да идентифицират тези колони. Когато целочисленият флаг се използва за указване, че автоматично генерираните ключове трябва да бъдат върнати, ROWID псевдо колоната се връща като ключ. ROWID след това може да бъде извлечен от ResultSet обект и може да се използва за извличане на други колони.

Не посочвате колоните (както е показано в примерния им код), така че извличате ROWID; опитвайки се да го получите с getInt() причинява грешката, която виждате. (Всъщност виждам Invalid column type: getInt not implemented for class oracle.jdbc.driver.RowidAccessor ERROR CODE: 17004 но мисля, че това се дължи на различна версия на драйвера).

Трябва да посочите колоната, която получава автоматично генерираната стойност. Ако се нарича MEETING_ID тогава бихте направили:

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

... подаване на масива от колони – само една в този случай – вместо флага RETURN_GENERATED_KEYS.

rs.getInt(1) след това ще извлече тази числова стойност.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да отстраните грешки в ORA-01775:верига от синоними?

  2. Методи за събиране:FIRST &LAST функции в Oracle Database

  3. Как да приложим връзки едно към едно, едно към много и много към много, докато проектирате таблици?

  4. JSON_ARRAYAGG() Функция в Oracle

  5. Как да създадете обект oracle.sql.ARRAY?