Autore Topic: [RISOLTO]chiusura result  (Letto 728 volte)

Offline skywings

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
    • http://www.marcodecarli.it
[RISOLTO]chiusura result
« il: 05 Maggio 2010, 15:17:11 »
sono un quasi novizio di gambas, ho fatto ricerche nel forum prima di aprire questo post, ma non ho trovato spiegazioni al comportamento dei resultset al momento che hanno terminato il loro compito.
Mi spiego meglio, io apro un resultset con una query, ma poi questo resultset come lo chiudo?
Probabilmente mi sto annegando in un bicchiere d'acqua ma non trovo spiegazioni.
Grazie
« Ultima modifica: 05 Maggio 2010, 18:51:29 da skywings »

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: chiusura result
« Risposta #1 il: 05 Maggio 2010, 15:47:05 »
Non ho capito bene.... ma un Result non si chiude, semplicemente raccoglie il risultato di una query SQL.
Esempio:
Codice: [Seleziona]
hResult = hConnection.Exec("SELECT * FROM tabella WHERE var1 = cond1")
In hResult avrai i dati che potrai usare come vuoi. Esempio:
Codice: [Seleziona]
WHILE hResult.Available
  IF hResult["nomecampo"] = .... THEN
    Message(hResult["nomecampo"])
  ENDIF
  hResult.MoveNext
WEND
 
Visita il mio sito personale: http://www.leonardomiliani.com

Offline skywings

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
    • http://www.marcodecarli.it
Re: chiusura result
« Risposta #2 il: 05 Maggio 2010, 17:44:59 »
scusatemi, ma provenendo dal mondo Visual Basic probabilmente ho convinzioni errate.
Mi spiego meglio, in VB, quando si esegue una query e quindi si carica un recordset poi si chiude e la perfezione sarebbe anche riportare a nothing il recordset creato per liberare memoria.
Mi sono fatto una classe in Gambas con una funzione di lettura dei dati di un database e mi stavo chiedendo se la ripetizione di questa funzione può portare a consumare RAM e quindi a rallentare il PC

PUBLIC FUNCTION db_seleziona(vssql AS String, vberrore AS Boolean) AS Result
  DIM rst AS Result
  rst = conn.Exec(vssql)
  RETURN rst
  CATCH
    IF vberrore = TRUE THEN
      Message.Info("Errore nell'esecuzione della query" & Chr$(10) & Chr$(34) & vssql & Chr$(34))
    END IF
END

Grazie :D

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: chiusura result
« Risposta #3 il: 05 Maggio 2010, 17:47:49 »
Il consumo di RAM è del tutto irrisorio....Ammenochè tu non abbia nel databe tutta wikipedia!

Fai tu stesso un test di memoria....apri un monitor di processi e usa il tuo programma....vedi cosa ne esce fuori...

Offline skywings

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
    • http://www.marcodecarli.it
Re: chiusura result
« Risposta #4 il: 05 Maggio 2010, 17:52:53 »
quando io richiamo (n) volte la funzione e ricarico nuovamente il result con nuovi dati non ci sono problemi, il result sarà corretto?

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: chiusura result
« Risposta #5 il: 05 Maggio 2010, 18:08:34 »
Gambas contiene un meccanismo di garbage collector per cui le risorse vengono liberate non appena non sono più utilizzate.
Quindi non aver timore ad aprire/chiudere la connessione: anzi, segui questo modo di operare piuttosto che quello di aprire la connessione ad inizio programma, tenerla aperta tutto il tempo di esecuzione e chiuderla alla fine. Così facendo sei esposto a rischi quali black-out, sbalzi di tensione, bambini ciaccioni che staccano l'alimentazione del PC, mogli che accendono forni e lavatrici contemporaneamente ecc...  ???
Visita il mio sito personale: http://www.leonardomiliani.com

Offline skywings

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
    • http://www.marcodecarli.it
Re: chiusura result
« Risposta #6 il: 05 Maggio 2010, 18:17:31 »
grazie...  :)