0

Я бразилец, и я пытаюсь сделать партию в базе данных MySQL.java.sql.SQLException: Нет значения для параметра 3 Java + Mysql

Но ошибка

"java.sql.SQLException: Значение не especified для параметра 3"

сохраняется.

public ClienteCRUD(String nome, String cpf, String endereco, String cidade, String uf, String cep) throws SQLException { 

     String[] str = {nome, cpf, endereco, cidade, uf, cep}; 

     String url = "jdbc:mysql://localhost/vendas"; 
     String sql = "insert into cliente (id_cliente, nomeCliente, enderecoCliente, cidade, cep, uf, cpf) values (?,?,?,?,?,?,?);"; 
     try (Connection con = DriverManager.getConnection(url, "root", "fabiio2"); 
     PreparedStatement stm = con.prepareStatement(sql)) { 
      for (int i = 0; i < str.length; i++) { 
       if (i == 0) { 
        stm.setInt(1, i + 4); 
        stm.setString(2, str[i]); 
       } 
       else { 
        stm.setString(i + 2, str[i]); 
       } 
       stm.addBatch(); 
      } 
      stm.executeBatch(); 
    } 

    } 

В моей базе данных содержится семь столбцов, в которых первая автоматически назначается.

Извините, но я новичок в Java.

Я рассчитываю на вашу помощь.

ответ

0
public ClienteCRUD(String nome, String cpf, String endereco, String cidade, String uf, String cep) throws SQLException { 
      String[] str = {nome, cpf, endereco, cidade, uf, cep}; 
      String url = "jdbc:mysql://localhost/vendas"; 
      String sql = "insert into cliente (id_cliente, nomeCliente, enderecoCliente, cidade, cep, uf, cpf) values (?,?,?,?,?,?,?)"; 
      try (Connection con = DriverManager.getConnection(url, "root", "fabiio2"); 
      PreparedStatement stm = con.prepareStatement(sql)) { 

      //for a sql complete parameter 
      for (int i = 0; i < str.length; i++) { 
       if (i == 0) { 
        stm.setInt(1, i + 4); 
        stm.setString(2, str[i]); 
       } 
       else { 
        stm.setString(i + 2, str[i]); 
       } 
      } 
      // to move this 
      stm.addBatch(); 
      stm.executeBatch();    
      } 
     } 
+0

Спасибо! Это сработало! Можете ли вы объяснить, почему «add.batch» находится за пределами «for»? Я думал, что в каждом цикле «для» есть «пакетная» инструкция для сборки всего процесса. Еще раз спасибо! –

Смежные вопросы