Newsgroup: it.comp.java
Titolo: chiudere connessioni

ciao a tutti
sto scrivendo un applicazione desktop in java in cui mi connetto a un
db access,vorrei sapere se e possibile fare in modo che quando si
chiude la finestra si chiudano tutte le connessioni al db lasciate
aperte:
in pratica quando mando in esecuzione apro la connessione e do una
scelta sul nonme da a inserire ma se esiste gia devo fargliene
scrivere un altro:problema se l utente si stufa di scriverne altri e
chiude di brutto la finestra mi rimane la connessione aperta e di
conseguenza anche il file temporaneo internet che dice che sto
labvorando su quel file.mdb!!!
visto che le scassi estendono thread devo usare metodo stop()?devo
annullare il bottone chiudi( x )nella finestra quando faro l
interfaccia e aggiungere un metodo chiudi da mettere nel listener di
un pulsante chiudi che mi definisco io?
non ci sono modi piu semplici visto che stop()e sconsiglieto ovunque?
per favore per chi avra la pazienza di leggere il codice se vedete
errori grossolani fatemeli presenti
grazie dell aiuto e pazienza
 
questa e la classe per gestire i db:
import java.sql.*;
import javax.sql.*;
public class MyDb {
private Statement st;
private Connection con;
private ResultSet rs;
public MyDb() {}
public void open(String drive,String Db){
    try{
 
    Class.forName(drive);
    con = DriverManager.getConnection(Db);
    st=con.createStatement();
 
    }catch(ClassNotFoundException openE){
         System.out.println("***e1****" + openE);
 
    }catch(SQLException openEsql){
         System.out.println("***e2***"+ openEsql);
 
         }
}
public void close(){
       try{        
       st.close();
       con.close();
       }catch(SQLException closEsql){
         System.out.println("****non riesco a chiudere:***   "
+closEsql);
       }
}       
public ResultSet executeQuery(String query)
     {   
       try{
 
 
this.rs
=st.executeQuery(query);
         }catch(SQLException queryEsql){
       System.out.println(queryEsql);
       }
 
       return rs;
     }
public int execute(String sql)
    {
       try{
       st.execute(sql);
       return 5;
         }catch(SQLException esql){
         System.out.println("ATTENZIONE  " +esql);
         return 1;
       }  catch(Exception e){
         System.out.println("ATTENZIONE" +e);
         return 2;
       }            
     }  
 
}     
questa quella con il main
import java.sql.*;
import javax.sql.*;
import java.io.*;
public class Peg extends Thread
{
	public static int scelta;
	public void Peg(){};
	public void run()  
	{ 
 
	 System.out.println("DIGITA 1 PER CREARE NUOVO PEG");
	 System.out.println("DIGITA 2 CANCELLARE PEG");
	 System.out.println("DIGITA 3 INSERIRE CAPITOLO");
	 System.out.println("DIGITA 4 CANCELLA CAPITOLO");
	 System.out.println("DIGITA 5 MODIFICA CAPITOLO");
	 System.out.println("DIGITA 6 VERIFICA ATTUALE DISPONIBILITA'
CAPITOLO ");
	 System.out.println("DIGITA 7 VERIFICA SALDO IMPEGNO");
	 System.out.println("DIGITA ciao PER USCIRE");
 
	 FrontEnd e = new FrontEnd();       
             String str=" ";
        while (str != null) {
             System.out.print("> prompt ");            
             str=e.read();
 
            if(str.equals("1")){
               System.out.println("Hai scelto 1 CREARE NUOVO PEG. ");
 
          		CrePeg cp=new CrePeg();
          		cp.start();
               break;
               }                              
            if(str.equals("2")){
               System.out.println("Hai scelto 2 CANCELLARE PEG. ");	
             	DelPeg dp=new DelPeg();
             	dp.start();
               break;
               }
               if(str.equals("3")){
               System.out.println("Hai scelto 3 INSERIRE CAPITOLO. ");
             InsCap i=new InsCap();
               i.start();
               break;
               }
 
               if(str.equals("4")){
               System.out.println("Hai scelto 4 CANCELLA CAPITOLO. ");
               //inserisci i=new inserisci();
              // i.start();
               break;
               }
 
               if(str.equals("5")){
               System.out.println("Hai scelto 5 MODIFICA CAPITOLO. ");
          //     inserisci i=new inserisci();
            //   i.start();
               break;
               }
 
 
               if(str.equals("7")){
 
               System.out.println("Hai scelto 7 VERIFICA SALDO
IMPEGNO");
          //     inserisci i=new inserisci();
          //     i.start();
               break;
               }
 
 
 
               if(str.equals("6")){
               System.out.println("Hai scelto 6 VERIFICA ATTUALE
DISPONIBILITà CAPITOLO ");
          //     inserisci i=new inserisci();
         //      i.start();
               break;
               }
             if(str.equals("ciao"))
                {
                	System.out.println("Ciao alla prossima...");
 
                	break;
                }	
                   System.out.println("CARATTERE NON VALIDO");     
 
              }
 
	}
 
 public static void main(String args[])throws IOException 
  {
  	Peg mia=new Peg();
  	mia.start();
  	 }
 
  }	
 
questa quella in cui ho il problema
import java.sql.*;
import javax.sql.*;
public class CrePeg extends Thread
{
 
	public void CrePeg(){}
	MyDb s= new MyDb();						//instanzio s oggetto di tipo MyDb
	public void run(){
 
	       String nome=" ";
           String ufficio=" ";
 
           s.open("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:acc");			//apro
la connessione chiamando metodo open
           	System.out.println("connessione aperta");
           do{
           		System.out.println("come vuoi chiamare il nuovo peg?");
 
         	    System.out.print("> prompt ");            
            	FrontEnd k=new FrontEnd();			//k istanza della classe
FontEnd
            	nome=k.read();						//in nome memorizzo il nome scritto
da tastiera grazie  a k.read
             }	while (nomePegEsistente(nome));
 
 
             	FrontEnd fe=new FrontEnd();	
             	System.out.println("a che ufficio corrisponde il  peg
"+nome+"?");
 
              	ufficio=fe.read();
 
                String ins="INSERT INTO
tab_peg(nome_peg,ufficio)values('"+nome+"','"+ufficio+"');";		//nella
stringa ins metto a stringa sql
            	System.out.println(ins);		//stampo ins
          		s.execute(ins);
          		s.close();
    	}
 
    boolean nomePegEsistente(String nomepeg){
            	ResultSet z=s.executeQuery("Select nome_peg from
tab_peg");		//salvo in z i risultati della query
 
         		try{
            			while(z.next()){
      						 if(nomepeg.equals(z.getString(1))){		//stampo il nome del
peg
       						 System.out.println("attenzione nome peg gia esistente,
sceglierne un altro");
                    		 return true;
                			 }
                		}
                		return false;
 
        		}    
        		catch(SQLException Mesql){
         				System.out.println("CIAO1"+ Mesql);
 
         		}	
         		catch(Exception Me){
            			System.out.println("CIAO2"+ Me);
 
 
				}		
return true;	}   
 
 
}

 ha scritto nel messaggio
news:9812133b.04060...@posting.google.com...


molte grazie andrea e un ottima idea spero funzioni ciao