Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tại sao chuyển đổi không hợp lệ được yêu cầu MÃ LỖI:17132?

Tài liệu Oracle JDBC cho biết:

Nếu các cột chính không được chỉ định rõ ràng, thì trình điều khiển Oracle JDBC không thể xác định cột nào cần được truy xuất. Khi tên cột hoặc mảng chỉ mục cột được sử dụng, trình điều khiển Oracle JDBC có thể xác định cột nào chứa khóa được tạo tự động mà bạn muốn truy xuất. Tuy nhiên, khi Statement.RETURN_GENERATED_KEYS cờ số nguyên được sử dụng, trình điều khiển Oracle JDBC không thể xác định các cột này. Khi cờ số nguyên được sử dụng để chỉ ra rằng các khóa được tạo tự động sẽ được trả lại, thì ROWID cột giả được trả về dưới dạng khóa. ROWID sau đó có thể được tìm nạp từ ResultSet đối tượng và có thể được sử dụng để truy xuất các cột khác.

Bạn không chỉ định các cột (như được hiển thị trong mã mẫu của chúng) nên bạn đang truy xuất ROWID; cố gắng đạt được điều đó với getInt() đang gây ra lỗi mà bạn thấy. (Tôi thực sự thấy Invalid column type: getInt not implemented for class oracle.jdbc.driver.RowidAccessor ERROR CODE: 17004 nhưng tôi nghĩ đó là phiên bản trình điều khiển khác).

Bạn cần chỉ định cột nhận giá trị được tạo tự động. Nếu nó được gọi là MEETING_ID thì bạn sẽ làm:

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

... truyền mảng cột - chỉ một cột trong trường hợp này - chứ không phải cờ RETURN_GENERATED_KEYS.

rs.getInt(1) sau đó sẽ truy xuất giá trị số đó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các phương pháp hay nhất:Nhiệm vụ bảo trì và nâng cao cho Đám mây Oracle

  2. tràn bộ đệm kích thước dbms_output

  3. Cách sử dụng ora_hash trên một cột kiểu dữ liệu xmltype

  4. Xoay / xoay bảng với tổng hợp trong Oracle

  5. ORA-30926:không thể có được một tập hợp các hàng ổn định trong các bảng nguồn