1
resposta

java.sql.SQLException: Parameter index out of range (0 < 1 ).

Olá, eu estou trabalhando num projeto e aparece o seguinte erro:

java.sql.SQLException: Parameter index out of range (0 < 1 ).
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
Eu já tentei mudar o index várias vezes mas o erro, persiste, por exemplo, se eu colocá-lo como 1 aparece a seguinte mensagem de erro:
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)

O meu código é o seguinte:

package cadastro.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;

import cadastro.model.Cadastro;
import cadastro.model.ConnectionFactory;

public class CadastroDAO {

    public void save(Cadastro contato) {

        String sql = "INSERT INTO CONTATOS('nome', 'email', 'senha','id_telefone') group VALUES ('?' , '?' , '?' ,'?')";

        Connection conn = null;
        PreparedStatement pstm = null;

        try {
        conn = ConnectionFactory.createConnectionToMySQL();
        pstm = (PreparedStatement) conn.prepareStatement(sql);

        pstm.setString(1, contato.getNome());
        pstm.setString(1, contato.getEmail());
        pstm.setString(1, contato.getSenha());
        pstm.setInt(1, contato.getId_Telefone());

        pstm.execute(sql);

        } catch (Exception e) {
        e.printStackTrace();
        } finally {

        try {
        if (pstm != null) {
        pstm.close();
        }

        if (conn != null) {
        conn.close();
        }

        } catch (Exception e) {
        e.printStackTrace();
        }

        }

        }

}

Desde já agradeço pelo tempo.

1 resposta

Oi Natália, tudo bem?

Sobre o erro:

java.sql.SQLException: Parameter index out of range (0 < 1 ).

Pergunta, qual versão do seu MySQL e qual versão do driver de conexão JDBC você está usando no projeto?

Sugestão: tentar fazer upgrade do driver mysql pelo menos para a versão 8.0.20

Sobre o erro:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

Você obterá esse erro caso sua query SQL não esteja com o marcador ? suficiente para comportar a quantidade de vezes que você chamou o setString() no seu PreparedStatement