boa tarde a todos!
eu estava querendo fazer o seguinte: tenho um textfield que será inserido um preço de combustível (o qual é quinzenal) que quando clicado no botão ele pegasse o valor deste textfield, multiplicasse pela quantidade de litros de cada abastecimento assim obtendo um “valor total” o qual seria inserido(nesse caso atuallizado) no campo valor_tot da tabela de abastecimento. Tentei fazer assim:
try
{
con_abast.executaSQL("select * from abastecimento where comb_id = 1 and abast_data between 'xx/xx/xxxx' and 'xx/xx/xxxx' order by id_abast"); //trazendo apenas os registros que são gasolina(comb_id) e estao dentro das datas corretas
con_abast.resultse.first(); //aponta pro primeiro registro do resultset
do
{
Id = con_abast.resultse.getInt("id_abast"); //pega o id do primeiro abastecimento do resultset
Litros = con_abast.resultse.getDouble("litros"); //pega a quantidade de litros do primeiro abastecimento do resultset
ValorTotal = ((Double.parseDouble(tf_valorquin.getText())) * Litros); //calcula o valor total
String sqledita = "update abastecimento set valor_tot = "+ValorTotal+" where id_abast = "+Id;
con_abast.statmen.executeUpdate(sqledita); //executa a atualização
}
while (con_abast.resultse.next());
JOptionPane.showMessageDialog(null, "atualizado com sucesso");
}
catch (SQLException ex)
{
JOptionPane.showMessageDialog(null, "Erro = "+ex);
}
Ele chega a executar a primeira vez bem certinho e atualiza no banco, mas qnd vai tentar ir pro próximo registro ele cai no catch e para… mesmo clicando no botao novamente ele não grava mais e apenas continua dando a a msg: org.postgresql.util.PSQLException: Este ResultSet está fechado.
Aonde estaria o erro neste caso? talvez na classe de conexão? segue ela:
import java.sql.*;
import javax.swing.*;
public class conexao
{
final private String driver = "org.postgresql.Driver";
final private String url = "jdbc:postgresql://10.0.55.126/postgres";
final private String usuario = "postgres";
final private String senha = "postgres";
private Connection conexao;
public Statement statmen;
public ResultSet resultse;
public boolean conecta()
{
boolean resultado = true;
try
{
Class.forName(driver);
conexao = DriverManager.getConnection(url, usuario, senha);
}
catch(ClassNotFoundException drive)
{
JOptionPane.showMessageDialog(null, "Driver não loclizado: "+drive);
resultado = false;
}
catch(SQLException banco)
{
JOptionPane.showMessageDialog(null, "Erro na conexão com o banco de dados: "+banco);
resultado = false;
}
return resultado;
}
public void desconecta()
{
boolean resultado = true;
try
{
conexao.close();
JOptionPane.showMessageDialog(null, "desconectou");
}
catch(SQLException errobanco)
{
JOptionPane.showMessageDialog(null, "Não foi possível fechar o banco de dados: "+errobanco);
resultado = false;
}
}
public void executaSQL(String sql)
{
try
{
statmen = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
resultse = statmen.executeQuery(sql);
}
catch(SQLException sqlex)
{
JOptionPane.showMessageDialog(null, sqlex);
}
}
}
Obrigado.