我是巴西人,正在尝试在MySQL数据库上进行批量处理。

但是错误


  “ java.sql.SQLException:没有为参数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的新手。

我指望您的帮助。

最佳答案

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

09-15 15:16