in
La comunità italiana dedicata a Sviluppatori e Architetti IT delle piattaforme Windows

Apertura e chiusura SqlConnection

Ultimo messaggio ricevuto il 27-03-2008 13.33 da devspy. 1 risposta(e).
Pagina 1 di 1 (2 elemento/i)
Ordina messaggi: Precedente Successivo
  • 27-03-2008 10.39

    • soprandi
    • Utente Top 150
    • Registrato il 31-01-2008
    • Messaggi 7

    Apertura e chiusura SqlConnection

    Ciao a tutti ho una domanda, forse banale da fare...

    ho una connessione SqlConnection verso la quale eseguo alcune select

    Dai valori ritornato dalla query di select ottengo l'id.

    Voglio eseguire per ciascuna riga tornata dalla query un update all'elemento di cui ho l'id. Il codice che scriverei è simile a quello che segue...

     

    SqlConnection connection = new SqlConnection(stringa di connessione);  //creo una connessione

    int id = 0; 

    string sql = "SELECT id FROM...";

    connection.open(); //apro la connessione

    Sqlcommand cmd = new SqlCommand(sql, connection) ;

    SqlDataReader res = cmd.ExecuteReader();   //eseguo la query e l'associo al reader

    while (res.Read()){  //scandisco gli elementi del reader

        id = (int)res["id"];

       // Per ogni elemento aggiorno la relativa quantità creando una nuova query ed eseguendola 

        string sql2 = "UPDATE tabelal SET qta = '2' where ID='+id+'";  //più o meno cosi

        sqlcommand cmd5 = new sqlcommand(sql, connection);

        cmd5.executeNonquery(); 

        .... 

     Il codice non funziona l'errore riporta che la connessione connection è già aperta dal reader e che dovrei prima chiuderlo... ma se lo chiudo perdo la condizione per il ciclo sugli elementi cercati precedentemente... che fare?

    Ho risolto tramite l'esecuzione di una funzione esterna che si occupa di fare l'update creando per se una nuova connessione etc etc...

     Ma è necessario? Ogni volta che faccio una query di ricerca e poi devo fare un update o un insert devo necessariamente avere connessioni separate al db? Devo quindi sempre aprire e chiudere le connessioni?

     suggerimenti? spiegazioni?

     

    grazie

     

    Simone 

    • Log
  • 27-03-2008 13.33 In risposta a

    Re: Apertura e chiusura SqlConnection

    Direi che le possibili soluzioni sono due:

    1. Cicli tutto il DataReader e carichi una collezione di ID. Poi chiudi il DataReader e scorri la collezione che contiene già tutti gli ID che ti servono.
    2. Oppure, sostituisci il metodo ExecuteReader con un FillDataset che ti restituisce un Dataset "disconnesso" contenente la tabella caricata con tutti gli ID necessari, che potrai tranquillamente scorrere mentre esegui altre operazioni con la connessione aperta.
    • Log
Pagina 1 di 1 (2 elemento/i)
Prelevato da http://www.devspy.com/forums/p/4712/5916.aspx
DevSpy.com 6.0 © 2001-2008 - Alcuni Diritti Riservati
Salvo diversa indicazione, tutti i contenuti sono pubblicati sotto licenza "Creative Commons Attribution-Share Alike 3.0"