Select com for update e ao mesmo tempo realizando UPDATE de acordo com o resultado do select

Olá pessoal gostaria de saber como referenciar um select para um update, eu necessito ao final do select o for update, para travar aquele registro para que nao seja feito nenhuma modificação nele, utilizo o banco informix, segue abaixo o meu código e o que estou tentando fazer…

    public ArrayList atualizarTest(int codigo,String nome) {
        conexao conex = new conexao();
        ArrayList lista = new ArrayList();
        conex.conectar();
        try {
            conex.conectar();
            Statement query2 = conex.conn.createStatement();
            ResultSet resultado = query2.executeQuery("SELECT * "
                    + "FROM ti_tst "
                    + "WHERE codigo ='"+codigo+"' "
                    + "for update;");
            if (resultado.next()) {
                
                PreparedStatement query = conex.conn.prepareStatement("UPDATE ti_tst SET nome=? "
                        + "WHERE CURRENT OF ?;");
                query.setString(1, "THIAGO");
                query2.getConnection().createStatement()
                //query.se
                query.executeUpdate();
                query.close();
                lista.add(codigo,nome);
            }
        } catch (SQLException e) {
            System.out.println("atualizarTest: " + e);
            int retorno = 0;
            retorno = e.getErrorCode();
            if (retorno == -79716) {
                JOptionPane.showMessageDialog(null, "Ocorreu o erro :" + retorno + " devido a queda de rede.\n"
                        + " Entre em contato com o Departamento de T.I!!", "ATENÇÃO", JOptionPane.ERROR_MESSAGE);
                System.exit(0);
            } else {
                return lista;
            }
        }
        return lista;
    }

Logo depois que faço o select eu preciso referenciar ele no update, alguem tem ideia de como posso fazer isso??

Bom dia meu jovem.
Bom, primeiro você não precisa do for update no primeiro SQL.
Segundo, no seu select de update existem 2 parametros, você está setando apenas um, porém, porque você não coloca o + “WHERE codigo =’”+codigo+"’ " no update também?
E não precisa do query2.getConnection().createStatement() no update.

Ficaria assim

     conex.conectar();
            Statement query2 = conex.conn.createStatement();
            ResultSet resultado = query2.executeQuery("SELECT * "
                    + "FROM ti_tst "
                    + "WHERE codigo ='"+codigo+"' ");
            if (resultado.next()) {
                PreparedStatement query = conex.conn.prepareStatement("UPDATE ti_tst SET nome=? "
                       + "WHERE codigo ='"+codigo+"' ");
                query.setString(1, "THIAGO");
                query.executeUpdate();
                query.close();
                lista.add(codigo,nome);
            }

Pelo o que eu estava lendo na internet, e algo do tipo um cursor, so que eu nao sei como aplicalo ao java, alguem tem alguem modelo ou um link que explique melhor?

Então cara, mas pelo que eu li neste link http://www.linhadecodigo.com.br/artigo/3177/aperfeicoar-update-e-delete-x-cursores.aspx

eu gostaria de colocar no java o codigo que segue no link acima , pois serão varios usuarios fazendo acesso ao mesmo tempo eu gostaria de bloquear essa informação, ou seria isso ai mesmo que voce citou?

obs ; Não pode ser realizado duas atualizações ao mesmo tempo, entende?

Alguem tem ideia de como posso fazer isso? necessito evitar que os dados sejam concorridos…

Desculpe, não tenho ideias sobre isso. Sinto muito. Da maneira que fiz não iria bloquear outros updates.
Eu poderia fazer um update na mesma hora que você, e sim, poderia dar problema.

Não lembro como faz para bloquear.
Abraço e sucesso

Alguem?

??

Ao tentar bloquear o acesso de outros usuários ao SELECT você acabará tendo outros problemas.
Minha sugestão é simplesmente retire essa clausula update do select ,
transfira os valores do select para variáveis e execute o update.

No caso de concorrência , o que vai valer será a ultima atualização.