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

java.sql.SQLException Индекс на параметър извън обхвата (1> брой параметри, което е 0)

Ще получите тази грешка, когато извикате някой от setXxx() методи на PreparedStatement , докато низът на SQL заявка няма заместители ? за това.

Например това е грешно :

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);

Трябва да коригирате съответно низа на SQL заявка, за да посочите заместителите.

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);

Обърнете внимание, че индексът на параметъра започва с 1 и че виене трябва да цитирате тези заместители така:

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

В противен случай пак ще получите същото изключение, тъй като анализаторът на SQL след това ще ги интерпретира като действителните стойности на низове и по този начин вече не може да намери заместителите.

Вижте също:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL заявка, за да получите най-продаваните продукти

  2. Динамично зареждане на данни при превъртане на div с помощта на php, mysql, jquery и ajax

  3. Свържете се с mysql в докер контейнер от хоста

  4. MySQL данни - Най-добрият начин за прилагане на пейджинг?

  5. Поддръжка на PDO за множество заявки (PDO_MYSQL, PDO_MYSQLND)