Posso utilizar resultsets para atualizar registros de um banco em ACCESS?
Estou colocando o código abaixo para exemplificar o que estou tentando fazer:
PreparedStatement ps = getConexao().prepareStatement(
"SELECT * FROM Cadastro WHERE Depto = ?;",
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE );
ps.setString(1, usuario.getDepto());
ResultSet rs = ps.executeQuery();
while (rs.next()) {
rs.updateString(3, "Vendas"); //a coluna de atualização está correta
rs.updateRow();
}
O motivo de usar este método é que estou manipulando um array de objetos e para alguns objetos podem haver alterações no banco e para outros não.
Por isso achei que era melhor usar um resultset para, nos registros que eu realmente precisar atualizar, usar o resultset para isso.
Quando eu rodo meu código, que é bem maior que o exemplo acima, ocorre o seguinte erro (na linha onde eu dou o rs.updateRow() :
java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access]Erro na linha
at sun.jdbc.odbc.JdbcOdbcResultSet.setPos(JdbcOdbcResultSet.java:5271)
at sun.jdbc.odbc.JdbcOdbcResultSet.updateRow(JdbcOdbcResultSet.java:4171)
at diegoqueres.ferramentas.carteiraipf.GerenciadorBancoDados.alterarEmpresas(GerenciadorBancoDados.java:105)
at diegoqueres.ferramentas.carteiraipf.Empresa.gravarAlteracoesEmpresas(Empresa.java:97)
at diegoqueres.ferramentas.carteiraipf.JanelaInclusaoAlteracao.jButtonSubmeterActionPerformed(JanelaInclusaoAlteracao.java:609)
at diegoqueres.ferramentas.carteiraipf.JanelaInclusaoAlteracao.access$600(JanelaInclusaoAlteracao.java:29)
at diegoqueres.ferramentas.carteiraipf.JanelaInclusaoAlteracao$6.actionPerformed(JanelaInclusaoAlteracao.java:303)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)