Newsgroup: it.comp.java
Titolo: il db a volte si chiude a volte no

Continuo ad avere qualche problema con la chiusura della connessione al db.
Ho scritto un metodo che chiude il db.
Quasi sempre funziona, ma a volte
fa cilecca...e non ne capisco il motivo?
Cosa può determinare la mancata
chiusura del db?
--------------------------------
Inviato via 
http://usenet.iol.it

 Cosa può determinare la mancata chiusura del db?
Dipende da cosa intendi per "mancata chiusura", in generale se hai
delle transazioni ancora attive la connessione non si chiude, ma
se chiudi tutto nella giusta sequenza non dovresti avere problemi.
Apro Connessione
Apro Statement
Apro ResultSet
...
Chiudo ResultSet
Chiudo Statement
Chiudo Connessione
I "puristi" obietteranno che chiudere il resultset non e' strettamente
necessario se chiudi lo statement, pero' e' una buona regola di
programmazione farlo comunque.
Davide
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Chiudo Connessione
Esatto eseguo proprio
questi passi e per conferma faccio stampare lo stato di ogni possibile
connessione.
Tutte chiuse.
MA....MA quel dannato file file.ldb (indica
che file.mdb è aperto!) c'è e non scompare sempre. Non sempre accade, anche
facendo gli stessi passi a volte si a volte no.
Da che dipende secondo te?
Da Access o da Java?


 Da Access o da Java?
Io tenderei a dare la colpa ad Access, con il quale in passato ho
litigato piu' volte, oppure al "substrato" ODBC/Jet che tiene
attivo il locking.


attivo il locking.
E immagino che su quello non posso
arrivarci in nessun modo con java.Vero?



No. Ma perche' non cambi DB?
Dai un'occhiata a questo thread:
http://groups.google.com/groups?hl=en&th=be042bd0a31d745d&rnum=1
Ciao,
    Bruno.
---
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://members.xoom.it/bbruno
| 
http://digilander.iol.it/bbossola

| 
http://digilander.iol.it/bbossola
--------------------------------
Inviato via 
http://usenet.iol.it
 

Okay, altre alternative:
1. Riconfigurare il driver ODBC
Hai provato ad eliminare il pooling dal driver ODBC? L'ultima versione dei driver
microsoft implementa questa funzionalita': prova a disabilitarla e vedi se risolvi
2. capire meglio cosa succede
Prova a semplificare il problema: fai un semplice oggetto che lo apre e lo chiude,
inserendo sempre maggiore complessita, e controlla quando si verifica il problema.
- Accade se semplicemente apri e chiudi la connessione?
- Se fai una query?
- Se fai un update?
- Se fai due update in transazione?
ecc.ecc.
Poi posta ul NG i risultati che vediamo :-D 
3. cambiare driver
Esistono driver per Access a pagamento che non hanno questi problemi: io in passato ho
usato jadoZoom (
http://www.infozoom.de/
) che per 150 euro e' un affare (calcola quanto
costi tu per un giorno al cliente!). Una lista completa di driver la trovi a questo URL:
http://industry.java.sun.com/products/jdbc/drivers
Facci sapere.
Ciao,
    Bruno.


ben 50.000 record quindi non potrei fare diversamente.
Ovviamente non conosco tutti i risvolti del tuo problema, ma mi passava 
per la testa un'altra possibilità e ho pensato di "esternarla": non si 
sa mai...
Arrivo subito al punto:
perché "ostinarsi" a voler sostituire il file durante l'esecuzione (se 
ho capito bene)?
Hai considerato la possibilità di importare i dati su un altro db?
50000 record non sono poi moltissimi, o no?
Alla ricezione del file Access, potresti aprire verso questo una 
connessione dsn-less (cerca fra i vecchi thread), "travasare" il tutto 
e poi abbandonare il file mdb.
Forse è un po' traballante, ma...
C'ho provato. :-)
-- 
Ciao
	Fabrizio C.

 microsoft implementa questa funzionalita': prova a disabilitarla e vedi se
risolvi
Scusa la curiosità ma cosa è il pooling???
Dove si disabilita e che cosa determina questa scelta?
Grazie.


Se implementato bene, semplicemente un grosso aumento di performance.
Ciao,
    Bruno.
---
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola