384 messaggi dal 26 agosto 2007
Ciao a tutti! Nella mia applicazione ASP.NET ho creato una classe statica con dei metodi statici che leggono i dati dal database e li restituiscono al chiamante sotto forma di classi. Fin qui tutto bene, il problema viene alla gestione della connessione al db. Nella classe statica ho inserito due metodi: Open e Close rispettivamente per aprire e chiudere la connessione. La procedura di lettura dati avviene in questo modo:

1. Apertura connessione con il metodo della classe statica
2. Chiamata del metodo di lettura dati della classe statica
3. Chiusura connessione con il metodo della classe statica

Il problema viene quando ad esempio nel sito ci sono due utenti: il primo utente si trova tra i punti 1 e 2 e invece il secondo utente si trova al punto 3. In questo modo il secondo utente mi chiude la connessione che ha aperto il primo utente e quindi quando il primo utente va a leggere i dati dal db ottiene un errore.

Come posso evitare ciò? Non so se ho esposto chiaramente quale è il problema.

Lunga vita e prosperità!!
377 messaggi dal 08 settembre 2001
secondo me c'e' un errore su come gestisci il tutto.

Se hai qualcosa del genere:

public class Db
{
public static string ConnectionString { get; set; }

public static void ExecuteNonQuery(string query)
{
using (SqlConnection _objConn = new SqlConnection(ConnectionString))
{
using (SqlCommand command = new SqlCommand(strQuery, _objConn))
{
command.Connection.Open();
command.ExecuteNonQuery();
}
}
....

potresti settare ConnectionString nel global.asax in Application_Start

poi nella tua applicazione avrau qualcosa tipo
Db.ExecuteNonQuery("query");


In questo modo ti assicuro che non dovresti avere problemi.

Se utilizzi .ExecuteReader(CommandBehavior.CloseConnection);
devi stare attendo a non chiudere il command prima del dovuto

PS:utilizza stored procedure il mio e' un esempio scritto al volo.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.