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

java.sql.SQLException Chỉ mục tham số nằm ngoài phạm vi (1> số tham số, là 0)

Bạn sẽ gặp lỗi này khi gọi bất kỳ setXxx() nào các phương thức trên PreparedStatement , trong khi chuỗi truy vấn SQL không có bất kỳ trình giữ chỗ nào ? cho điều này.

Ví dụ:đây là sai :

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
// ...

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // Fail.
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);

Bạn cần sửa chuỗi truy vấn SQL cho phù hợp để chỉ định trình giữ chỗ.

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
// ...

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1);
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);

Lưu ý rằng chỉ mục tham số bắt đầu bằng 1 và bạn không cần phải trích dẫn những trình giữ chỗ như vậy:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES ('?', '?', '?')";

Nếu không, bạn sẽ vẫn nhận được cùng một ngoại lệ, vì trình phân tích cú pháp SQL sau đó sẽ diễn giải chúng dưới dạng giá trị chuỗi thực và do đó không thể tìm thấy trình giữ chỗ nữa.

Xem thêm:



  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 cho độ dài cột SQL varchar

  2. Kích thước tối đa VARCHAR của MySQL là gì?

  3. Hàm TAN () MySQL - Trả về tiếp tuyến của một giá trị trong MySQL

  4. Làm cách nào để tôi có thể tạm thời vô hiệu hóa ràng buộc khóa ngoại trong MySQL?

  5. Thêm ID Tự động Tăng dần vào bảng hiện có?