Cordiais saudações, povo do GUJ.
Tenho um programa que navega em registros de uma tabela (MySQL) chamada filmes. Porém a unica opção que funciona é “ver próximo registro”. As demais opções que o navegador fornece são: ver registro anterior, avançar 10 registros, voltar 10 registros, ir para o primeiro registro e ir para o último registro:
A tela do navegador é esta que está no print abaixo:
Ele sempre mostra a mesma mensagem de erro para todas as cinco operações que não estão funcionando. A mensagem de erro é a que segue no prints abaixo:
Aqui vai o código do programa inteiro, (ele usa uma classe chamada BD que faz a conexão e não está dando problema). Não sei, mas acredito que seja alguma configuração que não fiz e deveria ter feito.
Parece que o problema é em um objeto chamado resultSet, da classe ResultSet, que armazena os dados da busca. Se alguém souber o que devo fazer para corrigir esses erros, por favor, me diga.
Obrigadão, atenciosamente,
Ronaldo
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package cap12;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author Ronaldo R. Godoi
*/
public class NavegaFilmes extends JFrame {
private JLabel label1, label2, label3, label4, label5;
private JButton btProximo, btAnterior, btPrimeiro, btUltimo, btMais10, btMenos10, btSair;
private JTextField tfCodigo, tfTitulo, tfGenero, tfProdutora, tfDatCom;
private BD bd;
private PreparedStatement statement;
private ResultSet resultSet;
public static void main(String args[]) {
JFrame frame = new NavegaFilmes();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public NavegaFilmes() {
inicializarComponentes();
definirEventos();
}
public void inicializarComponentes() {
setLayout(new FlowLayout(FlowLayout.LEFT));
label1 = new JLabel("Código ");
label2 = new JLabel("Título");
label3 = new JLabel("Gênero");
label4 = new JLabel("Produtora");
label5 = new JLabel("Data da Compra ");
tfCodigo = new JTextField(10);
tfTitulo = new JTextField(35);
tfGenero = new JTextField(10);
tfProdutora = new JTextField(15);
tfDatCom = new JTextField(8);
btProximo = new JButton(null, new ImageIcon("c:/icones/icon12/proximo.gif"));
btProximo.setToolTipText("Próximo");
btAnterior = new JButton(null, new ImageIcon("c:/icones/icon12/anterior.gif"));
btAnterior.setToolTipText("Anterior");
btPrimeiro = new JButton(null, new ImageIcon("c:/icones/icon12/primeiro.gif"));
btPrimeiro.setToolTipText("Primeiro");
btUltimo = new JButton(null, new ImageIcon("c:/icones/icon12/ultimo.gif"));
btUltimo.setToolTipText("Último");
btMais10 = new JButton(null, new ImageIcon("c:/icones/icon12/mais.png"));
btMais10.setToolTipText("+10");
btMenos10 = new JButton(null, new ImageIcon("c:/icones/icon12/menos.png"));
btMenos10.setToolTipText("-10");
btSair = new JButton(null, new ImageIcon("c:/icones/icon12/sair.png"));
btSair.setToolTipText("Sair");
add(label1);
add(tfCodigo);
add(label2);
add(tfTitulo);
add(label3);
add(tfGenero);
add(label4);
add(tfProdutora);
add(label5);
add(tfDatCom);
add(btPrimeiro);
add(btAnterior);
add(btProximo);
add(btUltimo);
add(btMais10);
add(btMenos10);
add(btSair);
setTitle("Navegação na tabela de Filmes");
setBounds(200, 400, 620, 120);
setResizable(false);
bd = new BD();
if(!bd.getConnection()) {
JOptionPane.showMessageDialog(null, "Falha ao conectar, o sistema será fechado!");
System.exit(0);
}
carregarTabela();
atualizarCampos();
}
public void definirEventos() {
btProximo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
resultSet.next();
atualizarCampos();
} catch(SQLException erro) {
JOptionPane.showMessageDialog(null, "Erro! " + erro.toString());
}
}
});
btAnterior.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
resultSet.previous();
atualizarCampos();
} catch(SQLException erro) {
JOptionPane.showMessageDialog(null, "Erro! " + erro.toString());
}
}
});
btPrimeiro.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
resultSet.first();
atualizarCampos();
} catch(SQLException erro) {
JOptionPane.showMessageDialog(null, "Erro! " + erro.toString());
}
}
});
btUltimo.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
try {
resultSet.last();
atualizarCampos();
} catch(SQLException erro) {
JOptionPane.showMessageDialog(null, "Erro! " + erro.toString());
}
}
});
btMais10.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
try {
resultSet.relative(10);
atualizarCampos();
} catch(SQLException erro) {
JOptionPane.showMessageDialog(null, "Erro! " + erro.toString());
}
}
});
btMenos10.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
try {
if(resultSet.getRow() > 10) {
resultSet.relative(-10);
} else {
resultSet.first();
}
atualizarCampos();
} catch(SQLException erro) {
JOptionPane.showMessageDialog(null, "Erro! " + erro.toString());
}
}
});
btSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
resultSet.close();
statement.close();
} catch(SQLException erro) {
JOptionPane.showMessageDialog(null, "Erro! " + erro.toString());
}
bd.close();
System.exit(0);
}
});
}
public void carregarTabela() {
String sql = "select * from filmes";
try {
statement = bd.connection.prepareStatement(sql);
resultSet = statement.executeQuery();
} catch(SQLException erro) {
JOptionPane.showMessageDialog(null, "Erro! " + erro.toString());
}
}
public void atualizarCampos() {
try {
if(resultSet.isAfterLast()) {
resultSet.last();
}
if(resultSet.isBeforeFirst()) {
resultSet.first();
}
tfCodigo.setText(resultSet.getString("codigo"));
tfTitulo.setText(resultSet.getString("titulo"));
tfGenero.setText(resultSet.getString("genero"));
tfProdutora.setText(resultSet.getString("produtora"));
tfDatCom.setText("" + resultSet.getDate("datacompra"));
} catch(SQLException erro) {
}
}
}