Eu uso uma classe separada para conectar ao banco…
Vou colocar aki uma classe inteira, e a classe do banco…
[code]package consultabd;
import consultabd.;
import java.sql.;
import javax.swing.;
import javax.swing.table.DefaultTableModel;
import java.util.;
public class ServicoAdd extends javax.swing.JInternalFrame {
private ResultSet rs;
int altgrav;
ConectaBanco conectaBanco = new ConectaBanco();
/** Creates new form Reservas */
public ServicoAdd() {
initComponents();
atualizaTabela(3);
rs = conectaBanco.busca("select * from servicosadd where sta_ser not in ('REMOVIDO')");
atualizaCampos();
}
private void atualizaCampos(){
try{
if(rs.last() == false){
}
else{
if(rs.isAfterLast()){
rs.previous();
}
else if(rs.isBeforeFirst()){
rs.next();
}
if(!rs.wasNull()){
lblNumCod.setText(String.valueOf(rs.getInt("cod_ser")));
txtDesc.setText(rs.getString("des_ser"));
txtPre.setText(rs.getString("pre_ser"));
}
}
}
catch(SQLException e){
e.printStackTrace();
mostraErro(e.toString(), e.getMessage());
}
catch(Exception e){
e.printStackTrace();
mostraErro(e.getMessage());
}
}
private void atualizaTabela(int colunas) {
rs = conectaBanco.busca("select cod_ser,des_ser,pre_ser from servicosadd where sta_ser not in ('REMOVIDO')");
Vector cabecalho = new Vector();
cabecalho.addElement("CODIGO");
cabecalho.addElement("DESCRIÇÃO");
cabecalho.addElement("PREÇO");
try {
Vector dados = new Vector();
DefaultTableModel modelo = new DefaultTableModel();
for (int i = 0; i < cabecalho.size(); i++) {
modelo.addColumn(cabecalho.get(i));
}
while (rs.next()) {
for (int i = 1; i <= colunas; i++) {
dados.add(rs.getString(i));
}
modelo.addRow(dados.toArray());
dados.removeAllElements();
}
tabSer.setModel(modelo);
} catch (SQLException e) {
e.printStackTrace();
mostraErro(e.toString());
} catch (Exception e) {
e.printStackTrace();
mostraErro(e.toString());
}
}
private void excluir(int codigo){
int resposta = JOptionPane.showConfirmDialog(null, “Deseja realmente excluir esse registro?”,"",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if(resposta==0){
String apaga = “update servicosadd set sta_ser=‘REMOVIDO’ where cod_ser=”+codigo;
conectaBanco.grava(apaga);
atualizaTabela(3);
rs = conectaBanco.busca(“select * from servicosadd where sta_ser not in (‘REMOVIDO’)”);
atualizaCampos();
}
else{
mostraErro(“Exclusão Cancelada”);
}
}
private void gravar(int i){
try{
String gravar = null;
String desc = txtDesc.getText().toUpperCase();
String preco = txtPre.getText();
if (i==0){
int codigo = Integer.parseInt(lblNumCod.getText());
gravar = "update servicosadd set des_ser='"+desc+"',pre_ser='"+preco+"' where cod_ser="+codigo;
}
if (i==1){
gravar = "insert into servicosadd values(0,'"+desc+"','"+preco+"','OK')";
}
conectaBanco.grava(gravar);
atualizaTabela(3);
rs = conectaBanco.busca("select * from servicosadd where sta_ser not in ('REMOVIDO')");
atualizaCampos();
}
catch(Exception e){
e.printStackTrace();
mostraErro(e.getMessage());
}
}
private void mostraErro(String erro) {
JOptionPane.showMessageDialog(null, erro, "Erro", JOptionPane.ERROR_MESSAGE);
}
private void mostraErro(String e, String erro) {
JOptionPane.showMessageDialog(null, erro, e, JOptionPane.ERROR_MESSAGE);
}
private void limpaCampos(){
txtDesc.setText("");
txtPre.setText("");
}
private void habilitaCampos(boolean arg){
txtDesc.setEditable(arg);
txtPre.setEditable(arg);
}
private void gravando(boolean arg){
btnGravar.setEnabled(arg);
btnCancelar.setEnabled(arg);
btnNovo.setEnabled(!arg);
btnAlterar.setEnabled(!arg);
btnRemover.setEnabled(!arg);
btnPrimeiro.setEnabled(!arg);
btnAnterior.setEnabled(!arg);
btnProximo.setEnabled(!arg);
btnUltimo.setEnabled(!arg);
}
private void btnNovoActionPerformed(java.awt.event.ActionEvent evt) {
limpaCampos();
habilitaCampos(true);
gravando(true);
altgrav = 1;
}
private void btnAlterarActionPerformed(java.awt.event.ActionEvent evt) {
habilitaCampos(true);
gravando(true);
altgrav = 0;
}
private void btnFecharActionPerformed(java.awt.event.ActionEvent evt) {
doDefaultCloseAction();
}
private void btnGravarActionPerformed(java.awt.event.ActionEvent evt) {
habilitaCampos(false);
gravando(false);
gravar(altgrav);
}
private void btnRemoverActionPerformed(java.awt.event.ActionEvent evt) {
excluir(Integer.parseInt(lblNumCod.getText()));
}
private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
habilitaCampos(false);
gravando(false);
rs = conectaBanco.busca(“select * from servicosadd where sta_ser not in (‘REMOVIDO’)”);
atualizaCampos();
}
private void btnPrimeiroActionPerformed(java.awt.event.ActionEvent evt) {
try{
rs.first();
atualizaCampos();
}
catch(Exception e){
mostraErro(e.getMessage());
}
}
private void btnAnteriorActionPerformed(java.awt.event.ActionEvent evt) {
try{
rs.previous();
atualizaCampos();
}
catch(Exception e){
mostraErro(e.getMessage());
}
}
private void btnProximoActionPerformed(java.awt.event.ActionEvent evt) {
try{
rs.next();
atualizaCampos();
}
catch(Exception e){
mostraErro(e.getMessage());
}
}
private void btnUltimoActionPerformed(java.awt.event.ActionEvent evt) {
try{
rs.last();
atualizaCampos();
}
catch(Exception e){
mostraErro(e.getMessage());
}
} [/code]
Classe do que conecta ao banco
[code]package consultabd;
import com.mysql.jdbc.*;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.*;
public class ConectaBanco {
private String url = "jdbc:mysql://localhost/locadora";
private String driver = "com.mysql.jdbc.Driver";
private Connection con;
private Statement st;
private ResultSet rs;
public ResultSet busca(String sql){
try{
Class.forName(driver);
con = (Connection) DriverManager.getConnection(url,"root","123");
st = (Statement) con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = st.executeQuery(sql);
return rs;
}
catch(Exception e){
mostraErro(e.getMessage());
return null;
}
}
public void grava(String sql){
try{
Class.forName(driver);
con = (Connection) DriverManager.getConnection(url,"root","123");
st = (Statement) con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
int respostadobanco = st.executeUpdate(sql);
if(respostadobanco==1){
JOptionPane.showMessageDialog(null, "Sucesso!!!");
}
else{
JOptionPane.showMessageDialog(null, "Erro!!!");
}
}
catch(SQLException e){
mostraErro(e.toString(),e.getMessage());
}
catch(Exception e){
mostraErro(e.toString(),e.getMessage());
}
}
private void mostraErro(String erro) {
JOptionPane.showMessageDialog(null, erro, "Erro", JOptionPane.ERROR_MESSAGE);
}
private void mostraErro(String e, String erro) {
JOptionPane.showMessageDialog(null, erro, e, JOptionPane.ERROR_MESSAGE);
}
}[/code]
No primeiro codigo eu soh tirei a parte onde o netbeans criar para inicializar os componentes.
Antes de eu fazer esse tratamento para nulo, eu navegava normalmente, soh dava problema quando retornava nulo.