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

    [ASP2.0] quando chiudere la connessione al db

    mettiamo conto che ho una connessione a un database

    ---

    devo effettuare delle operazioni sul db al Page_Load
    apro connessione, eseguo una update, chiudo connessione, tutto nel Page_Load.

    ---

    mettiamo che devo eseguire altre operazioni quando si clicca su Button1
    cosa faccio?

    apro connessione, eseguo una update , chiudo connessione tutto nel Button1_Click

    oppure apro connessione in Page_Load, eseguo una update in Button1_click e chiudo connessione in Page_Unload
    san imente saluta

    * http://simonecingano.it *

  2. #2
    io in genere con oledb creo una variabile di tipo oledbdatareader
    dim areader as OleDbDataReader e chiudo questa anziche la connessione

    Esempio pratico:


    Dim objCommand As New OleDbCommand(strsql2, objConn)
    areader = objCommand.ExecuteReader()
    areader.Close()

    spero di aver capito quello che chiedevi

  3. #3
    Originariamente inviato da binos1979
    io in genere con oledb creo una variabile di tipo oledbdatareader
    dim areader as OleDbDataReader e chiudo questa anziche la connessione

    Esempio pratico:


    Dim objCommand As New OleDbCommand(strsql2, objConn)
    areader = objCommand.ExecuteReader()
    areader.Close()

    spero di aver capito quello che chiedevi
    Per eseguire un update il datareader non ti serve a nulla, senza considerare che nell''esempio che hai postato la connessione non viene chiusa ma solo il datareader (per chiudere la connessione alla chiusura del datareader devi usare il CommandBehavior.CloseConnection sull'ExecuteReader)

    Per la gestione della connessione sarebbe meglio fare all-in-one, ossia tutto nello stesso evento e in un blocco try/catch/finally tipo:

    codice:
    try
    {
        //apri la connessione, fai le operazioni che ti servono
    }
    catch(Exception e)
    {
        //catch dell'eventuale eccezione
    }
    finally
    {
        //chiudi la connessione se è aperta e fai il dispose
    }
    Io generalmente nelle applicazioni gestisco tutte le iterazioni con il database in un namespace apposito dove ho delle classi per connettermi/disconnettermi/eseguire query e stored procedure. se devo effettuare delle operazioni apposite estendo la classe "madre" e faccio quel che devo fare, altrimenti me la sfango con un:
    codice:
    ClasseDellaConnessione cdc = new ClasseDellaConnessione();
    DataSet ds = cdc.DammiDataSet("SELECT xxx");
    //oppure
    DataSet ds = cdc.DammiDataSetParticolare();
    //oppure
    cdc.EseguiStaCippaDiInsert(xxx);
    insomma, i metodi poi dipendono dalle esigenze
    xxx

  4. #4
    grazie ad entrambi

    binos, il tuo esempio, come diceva ale, non c'entra con quello che chiedevo.
    mi sono sicuramente espresso male.

    interessante invece quello che dici tu ale.
    io utilizzo un namespace con una classe che gestisce la connessione.

    poi nel namespace locale dell'applicazione ho una classe che esegue le specifiche query (che siano select o insert poco importa qui) utilizzando la classe che si connette al database.

    la mia domanda in realtà voleva essere ben più semplice.

    quindi ogni volta che esegui una query sql tu apri e chiudi la connessione???
    san imente saluta

    * http://simonecingano.it *

  5. #5
    in linea di principio si, apro e chiudo la connessione ad ogni iterazione col db (il pooling del db servirà pure a qualcosa )
    ovvio che se se devo recuperare sistematicamente dati con query differenti cerco di aggregarle per evitare ridondanze, creando un metodo ad hoc. In linea di massima però non mi capita quasi mai di aprire e chiudere ripetutamente (più di una volta per pagina), se devo fare più operazioni uso una via tipo:

    //metodo che apre la connessione nella classe db
    //metodo iterazione con db n.1
    //metodo iterazione con db n.2
    //metodo iterazione con db n.3
    //metodo che chiude la connessione nella classe db

    tutto sempre nel blocco try/catch/finally.

    il modo di operare comunque dipende ovviamente sempre dal caso specifico
    xxx

  6. #6
    ti ringrazio molto, mi hai chiarito uno dei punti chiave (almeno dei miei attuali dubbi :master: )
    san imente saluta

    * http://simonecingano.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.