[RESOLVIDO] Java - SQL Update

Como faço pra fazer um update em meu banco de dados com um ArrayList sem os valores de Where?

String instSQL =
“UPDATE iten SET id_movi = ?”
+ “WHERE BP = ?”;

    try{
        PreparedStatement ps = conexao.prepareStatement(instSQL);
        String value2 = jcBPsMovi.getSelectedItem().toString();
        ps.setString(1, value2);
        ps.setString(2, (Itens));
        ps.execute();
        System.out.println("Alteração realizada com sucesso.");
        JOptionPane.showMessageDialog(null,
                "Alteração realizada com sucesso.",
                "Realização de alteração no cadastro", 
                JOptionPane.INFORMATION_MESSAGE);
    }catch(Exception e){
        System.out.println("Falha na alteração - "
                            + e.toString());
        JOptionPane.showMessageDialog(null,
                "Falha na alteração - " + e.toString(),
                "Realização de alteração no cadastro.", 
                JOptionPane.ERROR_MESSAGE);
    }

Não percebi o que pretendes. Queres atualizar vários registos com base numa lista ou todos os registos da tabela?

eu tenho um ArrayList com nomes, pretendo atualizar coisa numa tabela com base no valores do Array que seria o Where, pensei da seguinte maneira:
String instSQL = “UPDATE iten SET id_movi = ? WHERE BP = ?;”;

    while(!Itens.isEmpty()){
        
    try {
        PreparedStatement ps = conexao.prepareStatement(instSQL);
        String value2 = jcListaBPs.getSelectedItem().toString();
        ps.setString(1, value2);


        ps.execute();
        System.out.println("Cadastro realizado com sucesso.");
        JOptionPane.showMessageDialog(null,
                "Cadastro realizado com sucesso.",
                "Realização de cadastro",
                JOptionPane.INFORMATION_MESSAGE);
        buscarBPsMovi();
        listarCategoria();
        buscarNomeMovimentacao();
    } catch (Exception e) {
        System.out.println("Falha no cadastro - "
                + e.toString());
        JOptionPane.showMessageDialog(null,
                "Falha no cadastro - " + e.toString(),
                "Realização de cadastro",
                JOptionPane.ERROR_MESSAGE);
    }    

onde a segunda exclamação seria o valor do array, porem o ArrayList nao pode ser convertido pra String e tambem gostaria de pegar um valor do Array por como esta no While

Para o que pretendes no SQL usa-se o IN e não o =

UPDATE iten SET id_movi = 'abc' WHERE BP IN ('aaa', 'bbbb', 'cc');

O problema é que o PreparedStatement não suporta diretamente este tipo de parametros. Não podes fazer IN (?) porque depois não há maneira de colocar o conteudo do ArrayList no ponto de interrogação.

Algumas alternativas são:

1 - Construir a query de forma dinamica, colocando tantos ? no IN quantos os teus valores a alterar, separados por virgula ... WHERE BP IN (?,?,?,?) e depois fazer um setString para cada um dos elementos do ArrayList

2 - Construir a query de forma dinâmica, sem utilização dos parametros e colocando os valores diretamente na query. É semelhante ao anterior mas ficas sujeito a ataques de SQL injection se estes valores vem do utilizador e é mais confuso de concatenar porque tens de andar sempre a colocar as '' nos valores.

3 - Construir a query com um update (como tens) e executar várias vezes (preferencialmente com bath update), para os vários parametros.

teria algum código pra demostrar?

É só pesquisar no google… rapidamente encontrei estes
query dinamica
batch update

Fiz desta forma e funcionou

   try {
// Crie um objeto Statement
Statement stmt = conexao.createStatement();

// Execute o comando SQL
stmt.execute("SET SQL_SAFE_UPDATES=0;");

} catch (Exception ex) {
    ex.printStackTrace();
}
    
    String instSQL = "Select id_movi2 from movi where nome = ?;";
    ResultSet rs = null;
    String result = "";

        try {
            PreparedStatement ps = conexao.prepareStatement(instSQL);
            String value = jcBPsMovi.getSelectedItem().toString();
            System.out.println(value);
            ps.setString(1, value);

// Execute a consulta e obtenha o ResultSet
            rs = ps.executeQuery();

// Verifique se o ResultSet tem pelo menos uma linha
            if (rs.next()) {
                int idInt = rs.getInt("id_movi2");
                idMovi = String.valueOf(idInt);
                System.out.println(idMovi);
            }
            } catch (Exception e) {
// Imprima a pilha de rastreamento para ajudar a depurar o problema
             e.printStackTrace();
            }

    
    while(!Itens.isEmpty()){
try {
    String selectedItem = jcBPsMovi.getSelectedItem().toString();
    System.out.println(idMovi);
    String item = Itens.remove(0);
    String instSQL2 = "UPDATE iten SET id_movi = ? WHERE BP = ?";
    PreparedStatement ps = conexao.prepareStatement(instSQL2);
    ps.setString(1, idMovi);
    ps.setString(2, item);
    ps.execute();
    System.out.println("mudança .");
    JOptionPane.showMessageDialog(null,
            "mudança funcionou.",
            "mudança funcionou",
            JOptionPane.INFORMATION_MESSAGE);
    listarItens();
} catch (Exception e) {
    System.out.println("Falha no update - "
            + e.toString());
    JOptionPane.showMessageDialog(null,
            "Falha no cadastro - " + e.toString(),
            "Realização de cadastro",
            JOptionPane.ERROR_MESSAGE);
}                

}