我是巴西人,正在尝试在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();
}
}