Problemas

2 respostas
N

Estou com problemas no meu projeto.
Minha Classe possui um método para pegar os registros do banco de dados e colocá-los numa JTable, assim como um método para inserir dados no bd, e deletar registros nesse bd.
Num momento, insere, noutro não. Outra vez consigo deletar, outra não.
Que @#$*! pode estar acontecendo? O fato de todos os métodos pertencerem a uma única classe pode estar dando conflito?

Como resolver esse impasse?

2 Respostas

B

Ola

Bom, verifique se vc tá fazendo o commit da transeção, se caso desabilitou… mas poste o codigo pra gente poder dar uma olhada… assim sem informação fica sinistro te ajudar…

N

Está aqui o código:

import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;

public class TelaPrincipal implements ActionListener {
    
   JFrame janela = new JFrame("Tela Principal."); 
   JMenuBar barraMenu = new JMenuBar();
   JMenu arquivoMenu = new JMenu("Arquivo");
   JMenuItem insereMenu = new JMenuItem("Inserir Registro");
   JMenuItem saiMenu = new JMenuItem("Sair");
   JTable tabela;
   JScrollPane painelScroll;
   DefaultTableModel modeloTabela;
   Vector nomeColunas = new Vector();
   Vector dados = new Vector();
   
   public TelaPrincipal() {
      janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      janela.setExtendedState(JFrame.MAXIMIZED_BOTH);
      janela.setResizable(false);
      janela.setLayout(new FlowLayout());
      janela.setJMenuBar(barraMenu);
      barraMenu.add(arquivoMenu);
      arquivoMenu.add(insereMenu);
      arquivoMenu.addSeparator();
      arquivoMenu.add(saiMenu);
      insereMenu.addActionListener(this);
      saiMenu.addActionListener(this);
      this.exibirRegistros();
   }
   
   public void exibirRegistros() {
      try { 
         String driver = "org.hsqldb.jdbcDriver";   
         String url = "jdbc:hsqldb:file:./db/database";    
         String password = "";   
         String sqlSelect = "SELECT * FROM CLIENTES";  
         Class.forName(driver); 
         Connection conexao = DriverManager.getConnection(url, userId, password);
          Statement sqlStatement = conexao.createStatement();
         ResultSet resultado = sqlStatement.executeQuery(sqlSelect);
         ResultSetMetaData rsmd = resultado.getMetaData();
         int colunas = rsmd.getColumnCount();
         for(int i = 1; i <= colunas; i++)
            nomeColunas.addElement(rsmd.getColumnName(i));
          while(resultado.next()) {   
            Vector tupla = new Vector(colunas);   
            for(int i = 1; i <= colunas; i++)
               tupla.addElement(resultado.getObject(i));                          dados.addElement(tupla);
         }          
         sqlStatement.close();
         resultado.close();
      }
      catch(ClassNotFoundException cnfe) {
         cnfe.printStackTrace();    
      }
      catch(SQLException sqle) {
         sqle.printStackTrace();    
      }
         modeloTabela = new DefaultTableModel(dados, nomeColunas);
      tabela = new JTable(modeloTabela);  
       painelScroll = new JScrollPane(tabela);   
      janela.getContentPane().add(painelScroll);
      tabela.setEnabled(false);
      janela.setVisible(true);
  }
   
   public void adicionarRegistro() {
      try { 
         String driver = "org.hsqldb.jdbcDriver"; 
         String url = "jdbc:hsqldb:file:./db/database"; 
         String userId = "sa"; 
         String password = ""; 
         String sqlInsert = "INSERT INTO CLIENTES VALUES (?, ?, ?)"; 
         Class.forName(driver); 
         Connection connection = DriverManager.getConnection(url, userId, password); 
         String id = JOptionPane.showInputDialog(null, "Digite a ID do cliente:", "ID", 3); 
         String nome = JOptionPane.showInputDialog(null, "Digite o NOME do cliente:", "NOME", 3); 
         String fone = JOptionPane.showInputDialog(null, "Digite o TELEFONE do cliente:", "TELEFONE", 3); 
         int idInt = Integer.parseInt(id); 
         String nomeString = nome.toUpperCase(); 
         int foneInt = Integer.parseInt(fone); 
         PreparedStatement pstm = connection.prepareStatement(sqlInsert); 
         pstm.setInt(1, idInt); 
         pstm.setString(2, nomeString); 
         pstm.setInt(3, foneInt); 
         int inseriu = pstm.executeUpdate();
         if(inseriu != 1) { 
            JOptionPane.showMessageDialog(null, "Não foi possível inserir o registro! Verifique os valores inseridos.", "Resultado da inserção do registro", 3);  
         } 
         else { 
            connection.commit();
            modeloTabela.addRow(new Object[] { idInt, nomeString, foneInt } ); 
            JOptionPane.showMessageDialog(null, "Registro inserido com sucesso!", "Resultado da inserção do registro", 1);    
         }
         pstm.close(); 
         connection.close();
      }   // Fim try { 
      catch(ClassNotFoundException cnfe) { 
         cnfe.printStackTrace(); 
         System.out.println(cnfe.toString()); 
      } 
      catch(SQLException sqle) { 
         sqle.printStackTrace();  
         System.out.println(sqle.toString()); 
         JOptionPane.showMessageDialog(null, "Não foi possível inserir o registro! Verifique os valores inseridos.", "Resultado da inserção do registro", 3);  
      }
   }

   public void deletarRegistro() {
      try { 
         String driver = "org.hsqldb.jdbcDriver"; 
         String url = "jdbc:hsqldb:file:./db/database"; 
         String userId = "sa"; 
         String password = ""; 
         String sqlDelete = "DELETE * FROM CLIENTES WHERE ID_CLIENTE = ?)"; 
         Class.forName(driver); 
         Connection connection = DriverManager.getConnection(url, userId, password); 
         String id = JOptionPane.showInputDialog(null, "Digite a ID do cliente a ser deletado:", "ID", 3); 
         int idInt = Integer.parseInt(id); 
         PreparedStatement pstm = connection.prepareStatement(sqlDelete); 
         pstm.setInt(1, idInt); 
         int deletou = pstm.executeUpdate();
         if(deletou != 1) { 
            JOptionPane.showMessageDialog(null, "Não foi possível deletar o registro! Verifique ID digitada.", "Resultado.", 3);  
         } 
         else { 
            connection.commit();
            JOptionPane.showMessageDialog(null, "Registro deletado!", "Resultado.", 1);    
         }
         pstm.close(); 
         connection.close();
      }   // Fim try { 
      catch(ClassNotFoundException cnfe) { 
         cnfe.printStackTrace(); 
         System.out.println(cnfe.toString()); 
      } 
      catch(SQLException sqle) { 
         sqle.printStackTrace();  
         System.out.println(sqle.toString()); 
      }
   }

   
   public void actionPerformed(ActionEvent ae) {
      Object obj = ae.getSource();
      if(obj == insereMenu)
         this.adicionarRegistro();
      if(obj == saiMenu)
         System.exit(0);    
   }
   
   public static void main(String[] args) {
      TelaPrincipal tp = new TelaPrincipal();    
   }
}
Criado 11 de setembro de 2006
Ultima resposta 11 de set. de 2006
Respostas 2
Participantes 2