Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    439

    La connessione al database va sempre chiusa?

    Salve, vorrei sapere una cosa...

    in ogni pagina dove apro una connessione al database tipo:

    codice:
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/dbase.mdb")
    
    set oRs= Server.CreateObject("ADODB.Recordset")
    strsql="SELECT * FROM msgPvt"
    oRs.Open strsql, Conn
    Devo anche chiudere la connessione oRs oppure posso lasciarla aperta (per eventuali collegamenti con altre pagine)?

    Cosa succede nel caso in cui lascio la connessione aperta? Si rallenta il sito?

    Il codice per chiudere la connessione correttamente qual è?

    Grazie e scusate se disturbo per queste banalità

  2. #2
    la connessione è meglio chiuderla sempre , ed è anche meglio distruggere l'oggetto connection

    conn.close chiude

    set conn = nothing distrugge


  3. #3
    oRs non è una connessione ma un recordset

    si lo dvi chiudere, rallenta il database fino ad impallarlo.

    pre chiuderlo si fa

    codice:
    oRs.close
    set oRs = nothing
    stessa sintassi per la connessione:

    codice:
    conn.close
    set conn = nothing
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    439
    Aspetta fammi capire bene prima che sbaglio di più!

    Allora quando ho questo:
    codice:
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/dbase.mdb")
    
    set oRs= Server.CreateObject("ADODB.Recordset")
    strsql="SELECT * FROM msgPvt"
    oRs.Open strsql, Conn
    lo chiudo così:
    codice:
    oRs.close
    set oRs = nothing
    mentre se ho oRs... oRs2... oRs (ovvero più recordset) sulla stessa pagina posso chiuderli tutti insieme con:

    codice:
    conn.close
    set conn = nothing
    quindi conviene usare sempre quest'ultimo codice... giusto?

    Un'alra cosa... quando ho questo codice:
    codice:
    set RS2 = Server.CreateObject("ADODB.Recordset")
    RS2.ActiveConnection = MM_marcos_STRING
    RS2.Source = "SELECT * FROM Incontri"
    ...
    come si chiude... aspetto tue nuove per proseguire correttamente!

  5. #5
    ogni recordset va chiuso per i fatti suoi...se ne hai 2 farai

    codice:
    oRs1.close
    set oRs1 = nothing
    oRs2.close
    set oRs2 = nothing
    oRs3.close
    set oRs3 = nothing

    la chiusura della connessione va sempre fatta quando la connessione non ti serve più


    codice:
    set RS2 = Server.CreateObject("ADODB.Recordset")
    RS2.ActiveConnection = MM_marcos_STRING
    RS2.Source = "SELECT * FROM Incontri"
    ...
    ...
    RS2.close
    set RS2=nothing
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non confondere recordset e connessione. Sono oggetti separati che vanno aperti e chiusi SEMPRE altrimenti il tuo hoster ti spezza le gambe! :sexpulp:

    Roby

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    439
    Grazie delle risposte e scusami se sono duro a capire...

    Cosa intendi per:

    "la chiusura della connessione va sempre fatta quando la connessione non ti serve più"

    devo chiuderla alla fine di ogni pagina dove trovo un

    set RS2 = Server.CreateObject("ADODB.Recordset")
    RS2.ActiveConnection = MM_marcos_STRING
    e
    Set conn = Server.CreateObject("ADODB.Connection")

    cioè quello che non capisco devo scrivere nella stessa pagina sia:

    oRs1.close
    set oRs1 = nothing

    che

    conn.close
    set conn = nothing

    o basta uno dei due comandi?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    439
    Esempio in questa pagina (reale) cosa devo chiudere in fondo alla pagina?

    codice:
    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/dbase.mdb")
    
    set oRs= Server.CreateObject("ADODB.Recordset")
    strsql="SELECT DISTINCT A.usernameAutore, A.idAutore, A.LETTO FROM msgPvt A WHERE A.idDestinatario="& Session("ID_access") &" AND A.cancellatoAutore="& "0"  &" AND A.cancellatoDestinatario="& "0" &" AND LETTO = (SELECT MIN(LETTO) FROM msgPvt WHERE msgPvt.idDestinatario="& Session("ID_access")&" AND IDAUTORE = A.IDAUTORE) ORDER by A.usernameAutore"
    oRs.Open strsql, Conn
    
    set oRs2= Server.CreateObject("ADODB.Recordset")
    strsql="SELECT DISTINCT msgPvt.usernameDestinatario, msgpvt.idDestinatario FROM msgPvt WHERE msgPvt.idAutore="& Session("ID_access") &" AND msgPvt.cancellatoAutore="& "0"  &" AND msgPvt.cancellatoDestinatario="& "0" &" order by msgPvt.usernameDestinatario"
    oRs2.Open strsql, Conn
    %>
    codice:
    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/dbase.mdb")
    
    set mRs= Server.CreateObject("ADODB.Recordset")
    strsqlmRs="SELECT * FROM msgPvt WHERE (msgPvt.idDestinatario="& Session("ID_access") & " AND msgPvt.idAutore="& MyIdArray(MsgCounter) & ") OR ( msgPvt.idDestinatario="& MyIdArray(MsgCounter) &" AND msgPvt.idAutore="& Session("ID_access")&")"
    mRs.Open strsqlmRs, Conn
    
    set mRs2= Server.CreateObject("ADODB.Recordset")
    strsqlmRs2="SELECT * FROM incontri WHERE ID="& MyIdArray(MsgCounter) & ""
    mRs2.Open strsqlmRs2, Conn
    %>

  9. #9
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Sono oggetti separati e quindi vanno chiusi separatamente. Vale per tutti gli oggetti (anche FSO ad esempio) e tutti vanno aperti e chiusi separatamente.

    Roby

  10. #10
    Set conn = Server.CreateObject("ADODB.Connection ")


    set RS2 = Server.CreateObject("ADODB.Recordset ")


    nomi diversi -> oggetti diversi

    la connessione è quella che ti permette di aprire una "via" di comunicazione col database

    il recordset è l'insieme dei risultati che ottieni facendo una richiesta al database

    quindi di solito la struttura è questa:

    codice:
    Apri la connessione
    
    apri il recordset1 (oRs, RS2 o come ti piace di più...se preferisci lo chiami anche pippo)
    
    apri il recordset2 (che magari dipende dai risultati del primo)
    
    fai le tue operazioni
    
    chiudi il recordset2 (recordset2.close e set recordset2 = nothing)
    
    chiudi il recordset1 (recordset1.close e set recordset1 = nothing)
    
    apri il recordset3
    
    fai altre operazioni
    
    chiudi il recordset3 (recordset3.close e set recordset3 = nothing)
    
    chiudi la connessione (conn.close e set conn = nothing)
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

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 © 2025 vBulletin Solutions, Inc. All rights reserved.