Bom dia, boa tarde ou boa noite.
Estou fazendo um crud para um projeto pessoal e encontrei alguns erros. Algumas pessoas já me ajudaram, porém encontrei um erro relacionado ao parâmetro 12. Já tentei alterar o valor do parâmetro, contudo, não consigo entender o motivo do erro.
Se alguém puder me ajudar a entender o problema e a ensinar, agradeço desde já.
Segue o erro a baixo:
java.sql.SQLException: No value specified for parameter 12
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:396)
at CrudTransportadoraJava/br.com.cadastro.dao.CadastroDAO.save(CadastroDAO.java:40)
at CrudTransportadoraJava/br.com.cadastro.aplicaçao.Main.main(Main.java:24)
Você tem uma query com vários placeholders (?
), pelo erro, são pelo menos 12 deles.
Algo como ?, ?, ?, ?, ? ...
.
E você não definiu o valor do placeholder 12.
Para definir você usa um dos métodos set
(setString, setInt, setFloat, etc).
Ex.:
statement.setString(12, algumValor);
E é sempre bom você postar o código relacionado ao erro, fica mais fácil ajudar.
Entendi, vou te mostrar o que aconteceu:
Código fonte que tentei executar:
package br.com.cadastro.aplicaçao;
import br.com.cadastro.dao.CadastroDAO;
import br.com.cadastro.model.Cadastro;
public class Main {
public static void main(String[] args) {
CadastroDAO cadastroum = new CadastroDAO ();
Cadastro cadastro = new Cadastro ();
cadastro.setNome("Paulo Gustavo");
cadastro.setEmpresa("PontoMais");
cadastro.setTelefone("081995956765");
cadastro.setModal("Rodoviário");
cadastro.setRua("Rua Medeiros de Lira");
cadastro.setNumero("89");
cadastro.setBairro("Iputinga");
cadastro.setCidade("Recife");
cadastro.setUf("PE");
cadastro.setCNPJ("50893219000135");
cadastro.setEmail("pontomais@gmail.com");
cadastroum.save(cadastro);
}
}
Erro que apareceu na tela:
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.ClientPreparedStatement.checkBounds(ClientPreparedStatement.java:1373)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.ClientPreparedStatement.getCoreParameterIndex(ClientPreparedStatement.java:1386)
at mysql.connector.java@8.0.25/com.mysql.cj.jdbc.ClientPreparedStatement.setString(ClientPreparedStatement.java:1753)
at CrudTransportadoraJava/br.com.cadastro.dao.CadastroDAO.save(CadastroDAO.java:27)
at CrudTransportadoraJava/br.com.cadastro.aplicaçao.Main.main(Main.java:24)
Posta o código da classe CadastroDAO pra gente ver.
Esse erro já é diferente do primeiro, mas mostra o código da classe Dao…