
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
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


0