Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    Accesso a database e Apertuta/Chiusura per velocità

    Eseguo una serie di quesry ed inserisco i risultati in un array che utilizzo in seguito.

    La domanda è se sia più corretto chiudere ad ogni fine query oppure no. Ovvero:

    codice:
    SQL = "SELECT..."
    Set RS = Conn.Execute(SQL)
    if not RS.EOF then
       prima= true
       array_prima = RS.getrows
       numrighe_prima = ubound(array_prima,2)
    else
       prima= false
    end if
    RS.close
    set RS = nothing
    
    SQL = "SELECT..."
    Set RS = Conn.Execute(SQL)
    if not RS.EOF then
       seconda= true
       array_seconda = RS.getrows
       numrighe_seconda = ubound(array_seconda,2)
    else
       seconda= false
    end if
    RS.close
    set RS = nothing
    
    SQL = "SELECT..."
    Set RS = Conn.Execute(SQL)
    if not RS.EOF then
       terza= true
       array_terza = RS.getrows
       numrighe_terza = ubound(array_terza,2)
    else
       terza= false
    end if
    RS.close
    set RS = nothing
    oppure

    codice:
    SQL = "SELECT..."
    Set RS = Conn.Execute(SQL)
    if not RS.EOF then
       prima= true
       array_prima = RS.getrows
       numrighe_prima = ubound(array_prima,2)
    else
       prima= false
    end if
    
    SQL = "SELECT..."
    Set RS = Conn.Execute(SQL)
    if not RS.EOF then
       seconda= true
       array_seconda = RS.getrows
       numrighe_seconda = ubound(array_seconda,2)
    else
       seconda= false
    end if
    
    SQL = "SELECT..."
    Set RS = Conn.Execute(SQL)
    if not RS.EOF then
       terza= true
       array_terza = RS.getrows
       numrighe_terza = ubound(array_terza,2)
    else
       terza= false
    end if
    RS.close
    set RS = nothing
    Ho provato a prendere i tempi in entrambi i casi per la creazione della pagina e non cambia praticamente nulla.
    Dal punto di vista teorico qual è la forma più corretta?
    Grazie

  2. #2
    in teoria uguali perchè appena crei la nuovo connessione il precedente oggetto viene distrutto e la connessione chiusa... in pratica conviene chiuderle come suggerisce microsoft per evitare che qualcuna rimanga non chiusa e le risorse impiccate

  3. #3
    SET RS=CONN.EXECUTE

    non vuole RS.Close (ti dovrebbe addirittura dare errore)

    e comunque *prima* di fare una nuova SET RS=CONN.EXECUTE è sempre bene fare SET RS=NOTHING

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ok per l' RS=nothing, ma non sapevo che RS.close non va messo! Sei sicuro? E poi non mi da errore.

    E comunque nonostante abbia letto diversi post non ho ancora ben capito la differenza tra i 2. Io utilizzo sempre conn.execute perchè mi va bene prima leggere tutto ed inserire in array e poi solo visualizzare.

    Ci sono dei consigli in merito su quale utilizzare?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ma poi nel caso di conn.execute non vanno nemmeno messi conn.close e conn=nothing?

  6. #6
    conn.close e set=nothing vanno alla fine di tutto, non ogni volta

    userai rs.open quando devi interagire col recordset, cioà se usi rs.addnew o rs.update per inserire o aggiornare dati; in pratica, se lavori disconnesso (usi cioè sempre statement sql per INSERT e UPDATE), non dovresti usarlo mai

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.