Chiusura connessione sql server...

venerdì 03 novembre 2006 - 14.26

contiello Profilo | Senior Member

ciao ragazzi mi succede una cosa strana in una piccola routine anche dopo aver chiuso la connessione al db continuo a prelevare dati attraverso una select
il codice è questo.

Dim strsql As String
Dim conn As New SqlClient.SqlConnection
Dim cmdx As SqlClient.SqlCommand
Dim pwddb As String
Dim dadx As New SqlClient.SqlDataAdapter
Dim dts As New DataSet

conn.ConnectionString = "strconn"
conn.Open()

conn.Close() 'da notare qui la connessione viene chiusa come conferma la successiva
' msgbox

MsgBox(conn.State.ToString)
conn.Dispose()
cmdx = New SqlClient.SqlCommand("Select * FROM tusers WHERE username='enzo'", conn)
dadx = New SqlClient.SqlDataAdapter(cmdx)
dadx.Fill(dts)
If dts.Tables(0).Rows.Count <> 0 Then
MsgBox("Ci sono")
End If
conn.Close()
cmdx.Dispose()
dadx.Dispose()
dts.Dispose()
conn.Dispose()



come è possibile?

velimie Profilo | Newbie

il command apre la connessione passata per i fatti suoi?

freeteo Profilo | Guru

ciao,
il dataadapter per definizione, si apre e si chiude la connection da solo
Mediamente questo comportamento è ottimo inquanto ti evita lo smazzo di aprire chiudere e poi magari lasciare a perta la connessione bloccando altri etc...insomma concettualmente usando il dataadapter tu carichi/salvi dei dati e del resto non ti interessa.

Io lo uso spesso e devo dire che è veloce come approccio e soprattutto non ti da problemi di connessioni aperte (che tenere la connessione aperta = consumo di risorse spesso inutile).

Nel caso tu invece voglia controllare lo stato della connessione , devi usare 1 DataReader, il quale per definizione non fa niente alla connessione (quindi se non l'hai aperta va in errore appunto) e poi la devi chiudere tu.
Quest'ultimo approccio è sicuramente piu' veloce ma a mio avviso nella media delle applicazioni che farai a te non serve, vai meglio a farti 1 bel fill della datatable/dataset e avere i dati in memoria subito...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5