JDBC Statement progressdialog

JDBC Statement progressdialog

Innleggav debianuser » fre 25.07.2008 9:29

Hei!

Holder på å lage et java program som snakker med en Oracle database, men sliter litt med å få til noen detaljer med programmet.

Problemet er dette: Brukeren starter en spørring ved å trykke en knapp, som lett kan ta 10+ min. Jeg vil derfor at brukeren skal kunne avbryte denne spørringen om han/hun ønsker det. All kode for å avbryte spørringen har jeg allerede, men jeg er blank på hvordan jeg skal få vist en "avbrytdialog" mens spørringen kjører, som så vil forsvinne dersom den blir ferdig uten at brukeren trykket avbryt.

Noen innspill eller ressurser jeg kan ta en kikk på? Si også fra dersom jeg ikke har forklart godt nok eller du trenger kode :-)

Brukerens avatar
medlem i 184 måneder
 

Re: JDBC Statement progressdialog

Innleggav tjodolv » fre 25.07.2008 12:26

Bare av nysgjerrighet: Hva slags spørring er det som tar 10 minutter..?

Brukerens avatar
medlem i 191 måneder
 

Re: JDBC Statement progressdialog

Innleggav debianuser » fre 25.07.2008 12:44

En spørring mot en tabell på 2,5 mrd rekker:p

Brukerens avatar
medlem i 184 måneder
 

Re: JDBC Statement progressdialog

Innleggav ak » fre 25.07.2008 14:29

Hei,

da må du dele spørringen opp (eller fake det via noe som bare tar tiden). SQL serveren vet ikke selv hvor langt det er igjen før den har resultatet.

10 minutter er voldsomt mye, 2.5 millioner rader er ikke uhørt. Ikke alltid mulig, men u bør vurdere å opprette en tabell med cachede resultater og en med endringer i datasettet, slik at du kjører nye spørringer primært mot endringene.

Men start med en EXPLAIN på spørringene.

Administrator
Brukerens avatar
medlem i 218 måneder
 

Re: JDBC Statement progressdialog

Innleggav debianuser » fre 25.07.2008 14:43

Spørringen er ikke problemet her, jeg vil bare ha en dialog til å vise seg med en avbryt knapp fram til Statement objektet returnerer et ResultSet objekt. Dersom brukeren vil avbryte spørringen klikkes avbryt, og jeg kjører statement.cancel().

(Btw: 2,5 mrd = 2500 millioner rekker ;) )

Brukerens avatar
medlem i 184 måneder
 

Re: JDBC Statement progressdialog

Innleggav ak » fre 25.07.2008 16:17

ok ;)

Du må alikevel dele spørringen opp i flere små (hvis det er mulig), du får ikke kommunisert noe fra SQL serveren før spørringen er ferdig.

Administrator
Brukerens avatar
medlem i 218 måneder
 

Re: JDBC Statement progressdialog

Innleggav debianuser » fre 25.07.2008 16:28

Både databasen jeg snakker med, og driveren jeg bruker støtter cancel(), altså at du kan avbryte en gående spørring, og som sagt er dette i orden i koden min.

Det er derfor jeg vil ha en dialog til å komme opp på skjermen mens spørringen går, som gir brukeren denne muligheten til å avbryte spørringen :-P

edit: se gjerne her :-)

Brukerens avatar
medlem i 184 måneder
 

Re: JDBC Statement progressdialog

Innleggav ak » fre 25.07.2008 16:32

Beklager, jeg har hengt meg opp i overskriften "progressdialog", så jeg tok utgangspunkt i at du trengte en progressbar (siden det er en virkelig utfordring).

Hvilket rammeverk bruker applikasjonen for GUI? (Har den GUI?)

Administrator
Brukerens avatar
medlem i 218 måneder
 

Re: JDBC Statement progressdialog

Innleggav debianuser » fre 25.07.2008 16:47

Beklager dårlig overskrift, ingen progressbar sådan nei... Bruker bare forward-only resultset også, så ingen slags progress på noe nivå egentlig :-P

Bruker SWING, så tenker at det må bli noe ala statement i en tråd, og dialog i en annen, som så kan drepe statement.

Brukerens avatar
medlem i 184 måneder
 

Re: JDBC Statement progressdialog

Innleggav ak » fre 25.07.2008 19:07

Det enkleste, hvis jeg husker Swing riktig, er å lage dialogen i "hovedtråden" og subclasse Thread slik at den kan ta i mot dialog og spørringen som utføres i constructor.

I hovedtråden beholder du referansen til JDBC forbindelsen og kjører cancel() når brukeren trykker på knappen. Tråden som kjører spørringen lukker vinduet med dialogen når den takker for seg (enten det var vellykket eller avbrutt).

Var det det du var ute etter?

Administrator
Brukerens avatar
medlem i 218 måneder
 

Re: JDBC Statement progressdialog

Innleggav debianuser » fre 25.07.2008 19:21

Takker for svar!

Var det jeg var ute etter ja, skal prøve det imorgen, nå er det på tide å komme seg ut av huset for å se The Dark Knight! :-D

Brukerens avatar
medlem i 184 måneder
 

Re: JDBC Statement progressdialog

Innleggav sirchill » fre 07.08.2009 4:53

ett eksempel hvordan du kan gjøre det.. eksempelet inneholder en stor BUG/"tilleggsfunksjon"... la ved en zipfil med ett eksportert Eclipse prosjekt...

last ned
medlem i 169 måneder
 

Re: JDBC Statement progressdialog

Innleggav debianuser » fre 07.08.2009 12:38

Takker for svar, men tråden er allerede løst :-)

Brukerens avatar
medlem i 184 måneder
 

Re: JDBC Statement progressdialog

Innleggav sirchill » lør 08.08.2009 1:06

Jeg burde kanskje ha sett at tråden var ett år gammel :rolls eyes:
medlem i 169 måneder
 


Returner til Java



Hvem er i Forumene

Registrerte brukere: Google [Bot]