ASP.NET - The SqlCommand is currently busy Open

   
Vista:

The SqlCommand is currently busy Open

Publicado por Alfredo (35 intervenciones) el 08/05/2008 22:43:51
Tengo una aplicacion en VS.NET 2003 en 3 capas, tengo problemas de concurrencia, creo, por que me esta dando The SqlCommand is currently busy Open, Fetching.
Cuando leo datos uso:

Public Overloads Function TraerDataSet(ByVal ProcedimientoAlmacenado As String, ByVal ParamArray Argumentos() As System.Object) As System.Data.DataSet
Dim mDataSet As New System.Data.DataSet
CrearDataAdapter(ProcedimientoAlmacenado, Argumentos).Fill(mDataSet)
Me.CerrarConexion()
Return mDataSet
End Function

Protected Overrides Function CrearDataAdapter(ByVal ProcedimientoAlmacenado As String, ByVal ParamArray Args() As Object) As System.Data.IDataAdapter
Dim mCom As System.Data.SqlClient.SqlCommand = Comando(ProcedimientoAlmacenado)
Dim ds As DataSet
Dim dt As String
'' Si se han recibido Argumentos,
''se procede a asignar los valores correspondientes
If Not Args Is Nothing Then
CargarParametros(mCom, Args)
End If
Return New System.Data.SqlClient.SqlDataAdapter(mCom)

End Function

Protected Overrides Function Comando(ByVal ProcedimientoAlmacenado As String) As System.Data.IDbCommand
Dim mComando As System.Data.SqlClient.SqlCommand
If mColComandos.Contains(ProcedimientoAlmacenado) Then
mComando = CType(mColComandos.Item(ProcedimientoAlmacenado), System.Data.SqlClient.SqlCommand)
Else
Dim oConexion2 As New System.Data.SqlClient.SqlConnection(CadenaConexion)
oConexion2.Open()
mComando = New System.Data.SqlClient.SqlCommand(ProcedimientoAlmacenado, oConexion2)
Dim mConstructor As New System.Data.SqlClient.SqlCommandBuilder
mComando.CommandType = CommandType.StoredProcedure
mConstructor.DeriveParameters(mComando)
oConexion2.Close()
mColComandos.Add(ProcedimientoAlmacenado, mComando)
End If
With mComando
.Connection = Me.Conexion
.Transaction = MyBase.mTransaccion
End With
Return mComando
End Function

Public Overloads Function CerrarConexion()

If Not EnTransaccion Then
mConexion.Close()
End If
End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:The SqlCommand is currently busy Open

Publicado por David Lazo (1 intervención) el 03/03/2010 21:58:19
espero k te sirva ste codigo
un poco tard spero k te sirva!!!

Public Class DatosSQLServer
Inherits Curso.Datos.gDatos

Public Overrides Property CadenaConexion() As String
Get
If Len(MyBase.mCadenaConexion) = 0 Then
If Len(Me.Servidor) <> 0 And Len(Me.Base) <> 0 Then
Dim sCadena As String = "Data Source=PC0107\SQLEXPRESS;AttachDbFilename=C:\Pachacamac\Pachacamac.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
mCadenaConexion = sCadena.ToString
Else
Throw New _
System.Exception( _
"No se puede establecer la cadena de conexión")
End If
End If
Return mCadenaConexion

End Get
Set(ByVal Value As String)
mCadenaConexion = Value
End Set
End Property

Protected Overrides Sub CargarParametros(ByVal Comando As System.Data.IDbCommand, ByVal Args() As Object)

Dim i As Integer
With Comando
For i = 0 To Args.GetUpperBound(0)
.Parameters(i + 1).Value = Args(i)
Next
End With

End Sub

Shared mColComandos As New System.Collections.Hashtable

Protected Overrides Function Comando(ByVal ProcedimientoAlmacenado As String) As System.Data.IDbCommand
Dim mComando As System.Data.SqlClient.SqlCommand
If mColComandos.Contains(ProcedimientoAlmacenado) Then
mComando = _
CType(mColComandos.Item(ProcedimientoAlmacenado), System.Data.SqlClient.SqlCommand)
Else
Dim oConexion2 As New System.Data.SqlClient.SqlConnection(CadenaConexion)
oConexion2.Open()
mComando = New _
System.Data.SqlClient.SqlCommand(ProcedimientoAlmacenado, oConexion2)
Dim mConstructor As New System.Data.SqlClient.SqlCommandBuilder
mComando.CommandType = CommandType.StoredProcedure
mConstructor.DeriveParameters(mComando)
oConexion2.Close()
mColComandos.Add(ProcedimientoAlmacenado, mComando)
End If
With mComando
.Connection = Me.Conexion
.Transaction = MyBase.Conexion.BeginTransaction
End With
Return mComando
End Function

Protected Overrides Function CrearConexion(ByVal Cadena As String) As System.Data.IDbConnection

Return New System.Data.SqlClient.SqlConnection(Cadena)

End Function

Protected Overrides Function CrearDataAdapter(ByVal ProcedimientoAlmacenado As String, ByVal ParamArray Args() As Object) As System.Data.IDataAdapter

Dim mCom As System.Data.SqlClient.SqlCommand = Comando(ProcedimientoAlmacenado)
' Si se han recibido Argumentos,
'se procede a asignar los valores correspondientes
If Not Args Is Nothing Then
CargarParametros(mCom, Args)
End If
Return New System.Data.SqlClient.SqlDataAdapter(mCom)

End Function

End Class
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar