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

Chèn câu lệnh chuẩn bị vào cơ sở dữ liệu - PSQL

Bạn đã hiểu sai giá trị trả về của PreparedStatement#execute() .

Vui lòng đọc kỹ javadoc:

Trả về:

true nếu kết quả đầu tiên là ResultSet vật; false nếu kết quả đầu tiên là số lượng cập nhật hoặc không có kết quả.

Do đó, nó trả về - như hoàn toàn mong đợi - false trên một INSERT truy vấn. Nó chỉ trả về true trên SELECT truy vấn (tuy nhiên bạn thường muốn sử dụng executeQuery() thay vào đó trả về trực tiếp một ResultSet ).

Nếu bạn quan tâm đến các hàng bị ảnh hưởng, hãy sử dụng PreparedStatement#executeUpdate() thay thế. Nó trả về một int theo javadoc:

Trả về:

hoặc (1) số hàng cho câu lệnh Ngôn ngữ thao tác dữ liệu SQL (DML) hoặc (2) 0 cho câu lệnh SQL không trả về gì

Khi đó giá trị trả về bằng 1 hoặc lớn hơn sẽ cho biết việc chèn thành công.

Không liên quan vấn đề cụ thể:mã của bạn đang làm rò rỉ tài nguyên DB. Vui lòng đọc kỹ Tần suất kết nối, Câu lệnh và Bộ kết quả được đóng trong JDBC?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TypeError:Đối tượng 'int' không hỗ trợ lập chỉ mục

  2. BẢNG MÔ TẢ PostgreSQL

  3. Không tốt nhất mảng theo một cấp độ

  4. Làm cách nào để lấy truy vấn thuộc tính cột từ tên bảng bằng PostgreSQL?

  5. Postgres:LỖI:kế hoạch đã lưu trong bộ nhớ cache không được thay đổi loại kết quả