Al comando è già associato un DataReader aperto, che deve essere chius...

lunedì 04 maggio 2009 - 11.53

cok7sette Profilo | Newbie

Ho visto che questo problema ce l'hanno già avuti in molti ed ho anche trovato la soluzione:
Apro una nuova connection ad ogni esecuzione ed il problema si risolve da solo.


Il mio dubbio è legato alle prestazioni di un codice scritto in questa maniera.

Se ogni volta apro una connessione non mi ritroverò con un singlo client che mi apre, da solo, una decina di connessioni contemporanee?

Una volta che avrò 10 client cosa succede ad SQL server? (tra l'atro lavoro su SQL2000....)

Potessi almeno utilizzare una connessione "Predefinita"...


Mi sono creato una classe che "gestisce" i parametri di connessione al DB ed una dell eproprietà è proprio una system.data.sqlClient.sqlConnection, ma a questo punto diventa semplicemente inutile...

In questa"mia" classe ho anche aggiunto due Function che uso per eseguire comandi SQL e per valorizzare Datareader... (allego il codice)


Public Class clsDB
Dim m_sqlconnection As New System.Data.SqlClient.SqlConnection

Public Property DB_SqlConnection() As System.Data.SqlClient.SqlConnection
Get
DB_SqlConnection = m_sqlconnection
End Get
Set(ByVal value As System.Data.SqlClient.SqlConnection)
m_sqlconnection = value
End Set
End Property

Public Function ExecuteSqlCommand(ByVal strQuery As String) As Integer
Dim queryCommand As New System.Data.SqlClient.SqlCommand
Dim connection As New System.Data.SqlClient.SqlConnection

connection.ConnectionString = Me.DB_Connectionstring
connection.Open()
'POTESSI FARE ... connection = Me.DB_SqlConnection ... POTESSI, ma non si può fare....
queryCommand.CommandText = strQuery
queryCommand.Connection = connection
ExecuteSqlCommand = queryCommand.ExecuteNonQuery
queryCommand.Dispose()

End Function

Public Function ExecuteSqlDataReader(ByVal strquery As String) As System.Data.SqlClient.SqlDataReader
Dim connection As New System.Data.SqlClient.SqlConnection
Dim query As New System.Data.SqlClient.SqlCommand

connection.ConnectionString = Me.DB_Connectionstring
connection.Open()
'IDEM COME SOPRA
query.Connection = connection
query.CommandText = strquery
ExecuteSqlDataReader = query.ExecuteReader()
query.Dispose()

End Function

End Class

Solo che non sono del tutto convinto che questo sia il metodo migliore (e sopratutto l'unico) per eseguire in maniera performate comandi SQL...


Qualche suggerimento?

Stò sbagliando tutto o questa è "la via"?
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