Tudo funciona, até certo ponto

0 respostas
N
public void cadastrarCliente() {
      try {
           String driver = "org.hsqldb.jdbcDriver";
           String url = "jdbc:hsqldb:file:./db/CLIENTES";
           String userId = "sa";
           String password = "";
           String sqlSelect = "SELECT * FROM CLIENTES";
           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 {
              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();
        }
        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);  
        }
  }

Mesmo quando a inserção do novo registro é realizada com sucesso, os novos valores não aparecem no arquivo .script do banco de dados hsqldb.
SÓ QUANDO EU REINICIO O PROGRAMA, é que é atualizado o banco de dados. Porque isso?

Outra coisa: Porque quando o resultado do PreparedStatement.execute() é != 1 a mensagem de erro que eu coloquei em seguida não é exibida? Somente aparece a mensagem de erro colocada dentro do catch(SQLException sqle).

Criado 14 de julho de 2006
Respostas 0
Participantes 1