Ciao a tutti,
mi sto addentrando nei meandri di asp.net (linguaggio c#)
Volevo proporvi questo codice per capire il discorso "chiusura connessione".
In asp ero abituato a ragionare in questa maniera:
1. apro la connessione al db
2. effettuo select (apro il rs, chiudo e setto a nothing il rs), update, delete in un punto
3. effettuo select (apro il rs, chiudo e setto a nothing il rs), update, delete in un altro punto
4 .vedi 2 e 3
5. chiudo la connessione
In asp.net ora sto simulando un caso molto semplice:
Da un form ricevo un dato, verifico che il dato coincida con quello presente nel db, ed effettuo un update.
Codice PHP:
using (SqlConnection conn = new SqlConnection(constr))
{
//estraggo il dato che mi ineterssa
DataSet ds2 = new DataSet();
string datoattuale = "";
string str_select = "SELECT dato FROM tabella WHERE dato = '" + variabile + "'";
SqlDataAdapter da2 = new SqlDataAdapter(str_select, conn);
da2.Fill(ds2, "dati");
for (int i = 0; i < ds2.Tables[0].Rows.Count; i++)
{
dato = ds2.Tables[0].Rows[i]["dato"].ToString();
}
//fine estraggo il dato che mi interessa
string nuovodato = "";
nuovodato = Nuovodato.Text.Replace("'", "''").Replace("%", "%").Replace("<", "").Replace(">", "").ToString();
nuovodato = nuovapassword.Trim();
string str_update = "UPDATE tabella SET dato = '" + nuovodato + "'";
SqlCommand cmd = new SqlCommand(str_update, conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
Se prima di cmd.ExecuteNonQuery() togliessi l'apertura della connessione il sistema mi risponde che non puo' effettuare l'operazione in quanto l'oggetto conn e' chiuso.
Questo accade perche' ho utilizzato using (sqlconnection etc. (da quanto ho letto l'using chiude gli oggetti se lasciati aperti una volta effettuata l'operazione in cui si e' utilizzato quell'oggetto)?
Fosse cosi', in termini di prestazioni è meglio lasciare comunque using oppure aprire una sola volta la connessione per poi chiuderla alla fine? (in questo caso credo che la connessione si apra e chiuda due volte, correggetemi se sbaglio).
Grazie a tutti!