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

Nhận tất cả các khóa ngoại bằng JDBC

Mặc dù vòng lặp while của bạn lặp lại trên toàn bộ ResultSet , hàm sẽ chỉ trả về cột cuối cùng trong một ràng buộc FK vì trên mỗi lần lặp lại, bạn ghi đè giá trị của lần lặp trước đó (fkTableData = rs.getString(i); ). Btw:`fkTableData thực sự phải là một biến cục bộ của phương thức, không phải là một biến cá thể.

Hàm của bạn sẽ trả về một List<String> không phải là String .

Ngoài ra:bạn đang gọi getImportedKeys() một lần cho mỗi cột trong ResultSet. Điều đó là cực kỳ kém hiệu quả. Nếu bạn đang sử dụng Oracle, bạn sẽ nhận thấy điều đó ngay lập tức vì việc truy xuất thông tin FK ở đó cực kỳ chậm (Postgres nhanh hơn nhiều khi truy cập danh mục hệ thống).

Dưới dạng getImportedKeys() trả về một hàng cho mỗi FK cột bạn cũng cần thu thập tất cả các hàng thuộc về một định nghĩa ràng buộc duy nhất (tức là cho một kết hợp bảng cha / con).

Có lẽ điều tốt nhất là định nghĩa một lớp PkDefinition lưu trữ tất cả các cột liên quan và tên bảng có liên quan và hàm của bạn trả về List<PkDefinition> để tránh nhiều lệnh gọi cho cùng một hàng tập hợp kết quả.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails 4 custom 404 gây ra lỗi kết nối postgresql trên Heroku

  2. Thoát khỏi hstore chứa các toán tử trong câu lệnh JDBC Prepared

  3. Làm cách nào để thực thi nhiều câu lệnh trong một truy vấn với Rails?

  4. Sự khác biệt giữa kiểu dữ liệu Bit và Boolean trong PostgreSQL

  5. Làm cách nào để tôi có được các hàng ĐÃ CHÈN và CẬP NHẬT cho hoạt động UPSERT trong postgres