Problemas com HSQLDB + Java

Olá Pessoal,

tenho o seguinte código:

import java.sql.*;

public class Banco{

    private Connection con;    
    private String jdbcDriver = "org.hsqldb.jdbcDriver";
    private String jdbcUrl    = "jdbc:hsqldb:file:C:\\FONTES\\Java\\JAgenda\\src\\bd\\bd;shutdown=true";
    private String jdbcUser   = "sa";
    private String jdbcPasswd = "";
    
    public Banco() {
        try  {
            Class.forName(jdbcDriver);
            con = DriverManager.getConnection(jdbcUrl,jdbcUser,jdbcPasswd);            
        } catch (Exception ex)  {
            ex.printStackTrace();
        }
    }
    
    public void selecionar(){
        try  {
            Statement stmt = con.createStatement();
            
            ResultSet res = stmt.executeQuery("SELECT ID, NOME, ENDERECO, TELEFONE, CELULAR, EMAIL, OBS FROM AGENDA ORDER BY NOME");
            
            while(res.next()){            
                System.out.println(res.getString(1));
                System.out.println(res.getString(2));
                System.out.println(res.getString(3));
                System.out.println(res.getString(4));
                System.out.println(res.getString(5));
                System.out.println(res.getString(6));
                System.out.println(res.getString(7));                
                System.out.println("");
            }
            
            res.close();
            stmt.close();
        } catch (SQLException sqle)  {
            sqle.printStackTrace();
        }        
    }
    
    public void inserir(){
        try  {
            PreparedStatement stmt = con.prepareStatement("INSERT INTO AGENDA VALUES(?,?,?,?,?,?,?)");
            
            stmt.setInt(1, 5);                  //ID
            stmt.setString(2, "GERMANO");       //NOME
            stmt.setString(3, "CERRO");         //ENDERECO
            stmt.setString(4, "257");           //TELEFONE
            stmt.setString(5, "9111");          //CELULAR
            stmt.setString(6, "KARGEMALHAS");   //EMAIL
            stmt.setString(7, "TESTE OBS");     //OBS
            
            stmt.execute();            
            
            stmt.close();           
        } catch (SQLException sqle)  {
            sqle.printStackTrace();
        }        
    }
    
    public void alterar(){
        try  {
            PreparedStatement stmt = con.prepareStatement("UPDATE AGENDA SET NOME = ?, ENDERECO = ?, TELEFONE = ?, CELULAR = ?, EMAIL = ?, OBS = ? WHERE ID = ?");            
            
            stmt.setString(1,"MANUEL GERMANO");
            stmt.setString(2,"CENTRO");            
            stmt.setInt(7, 3);
            
            stmt.execute();
            
            stmt.close();           
        } catch (SQLException ex)  {
            ex.printStackTrace();
        }        
    }
    
    public void deletar(){
        try  {
            PreparedStatement stmt = con.prepareStatement("DELETE FROM AGENDA WHERE ID = ?");    
            
            stmt.setInt(1,3);
            
            stmt.execute();
            
            stmt.close();        
        } catch (SQLException ex)  {
            ex.printStackTrace();
        }       
    }
    
    public static void main(String[] args) {
        Banco banco = new Banco();         
        
        //banco.inserir();        
        //banco.alterar();        
        //banco.deletar();       
        banco.selecionar();     
        
    }    
}

Estou com o seguinte problema!

Primeiro rodo o programa utilizando o metodo inserir e o selecionar!
o programa roda, inseri este novo registro e mostra todos os registros.

depois rodo o programa novamente mas somente no modo selecionar, sem inserir, e o registro inserido anteriormente não está mais lá.

Assim acontece quando preciso apagar um registro, ele apaga, mas depois se rodar novamente, ele não apagou!

é como se faltasse um commit, já fiz alguns testes com o commit, mas de nada adiantou!

Espero ter sido claro com o meu problema!
conto com a ajuda de vcs!
abraço

Pelo que vi nos seus códigos, aparentemente pode estar certo…

o que pode estar acontecend e o seguinte…

se tu reparar no seu método insert… elel esta inserindo no iD o valor 5, e no delete, deletando os registros com iD 3, ja reparou nisso ?

op amigo,
na verdade eu rodo o insert e o select dai acontece aquilo.
dai testo o delete e o select e acontece a mesma coisa, ele deleta mas na verdade não deleta!
nunca rodo o insert o delete e o select junto, é sempre o insert ou o delete!

Ola…

faca o seguinte…

seta o autocomit como false, depios q executar o ps.execute… ai tu comita, testa isso.

olá,
tu quer que eu set o AutoCommit como False depois do stmt.Execute() ?

se for isso, como seto o AutoCommit como False no codigo java.

obrigado + uma vez

ixi… tem q olhar na API kra