Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB6]Apertura e chiusura connessione database

    Buona giornata a tutti!
    Volevo chiedere:
    ma quando viene aperta un connessione ad un db ed un recordset relativo ad una query sullo stesso db bisogna poi chiudere connessione e recordset in ogni routine, o è sufficiente aprire e chiudere solo in form_load e form_unload? Tra l'altro se devo passare dati da un form ad un altro non dovrei neanche chiudere la connessione ed il recordset sennò quali dati passo?
    Qual'è la procedura più corretta?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Dipende ...

    Il comportamento piu' corretto e' quello che tende a mantenere il meno possibile attiva una connessione.

    Quindi,

    1) apri la connessione
    2) leggi i dati
    3) li rendi disponibili
    4) chiudi la connessione

    ovvero

    1) apri la connessione
    2) inserisci/modifichi i dati
    3) chiudi la connessione

    Naturalmente questa e' una regola che vale maggiormente se il database e' in rete e ancora di piu' se e' Access.

    Se il db e' locale o e' un DBMS, potresti mantenere aperta la connessione (aprirla al Load e chiuderla all'Unload) senza gravare troppo sul server o senza avere problemi di corruzione dei dati.

    Per quanto riguarda i recordset, dovresti lavorare piu' che puoi con quelli "lato client" e con il "lock ottimistico" (magari con il row versioning) e, in ogni caso, aprirli e chiuderli quando non ti necessitano piu'.

    In piu', evita di gestire un gran numero di record nello stesso recordset ma utilizza la WHERE ovunque puoi per snellire il traffico di rete e limitare l'occupazione di memoria.

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao vicky,
    cioè che ti ha suggetito Oregon è da seguire alla lettera se non vuoi incontrare inconvenienti del tipo: il programma è chiuso ma in effetti è ancora in funzione (ti accorgi richiamando Task manager di window); un eccessivo utilizzo di memoria (prova ad evidenziare un rs e poi premi contemporaneamente Maiusc+F9 vedrai quanti oggetti sono attivi).
    In particolare se devi scambiare tra le Form dati prelevati da una Tbl del DB, usa variabili dichiarate in un modulo Bas come Public, così le "vedrai" in tutto il progetto.
    Quindi quando devi fare un "Insert" alla fine del codice
    inserisci:
    '... ...
    ' Chiude la connessione:
    Cns.Close
    Set Cns = Nothing
    End Sub
    quando devi fare un "Select" alla fine del codice
    inserisci:
    '... ...
    'Chiude e cancella il recordSet:
    RST1.Close
    Set RST1 = Nothing
    'Chiude e cancella la connessione:
    CnsA1.Close
    Set CnsA1 = Nothing

    Per quanto riguarda invece la connessione con il DB, ti consiglio di farla all'apertura del progetto con:
    ' Inizializza la connessione con DB - Modulo Connessione:
    Call DataConnessione2
    dato che avrai scritto il codice in un modulo Bas, come segue:
    Public DataConnessione As String
    '---------------------------------
    Public Sub DataConnessione2()
    DataConnessione = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Computo.mdb;Persist Security Info=False;"
    End Sub
    Ciao.
    LM

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