Problema con Transacciones y DataReader

21/05/2004 - 12:39 por Anonimo | Informe spam
Hola a todos.

Estoy utilizando Transacciones y DataReader, y me da un
problema.

Inicio una transacción a partir de una conexión.

Con una conexión, creo un Command, e intento ejecutar
ExecuteReader()

Cierro DataReader, Close()

Posteriormente me da una excepción similar a esta:

"Fallo en Inserción: la conexión está cerrada"

En el CommandBehavior pongo Default y me vuelve a fallar.

Y si no cierro DataReader me sale algo similar a esto:
"Insert failed: There is already an open DataReader
associated with this Connection which must be closed
first".


Qué puedo hacer ?.

Preguntas similare

Leer las respuestas

#1 José Miguel Torres
21/05/2004 - 12:46 | Informe spam
Disculpa... para que necesitas una transacción cuando estás con un
DataReader?
No entiendo bien que quieres decir



escribió en el mensaje
news:101f701c43f1f$f6758710$
Hola a todos.

Estoy utilizando Transacciones y DataReader, y me da un
problema.

Inicio una transacción a partir de una conexión.

Con una conexión, creo un Command, e intento ejecutar
ExecuteReader()

Cierro DataReader, Close()

Posteriormente me da una excepción similar a esta:

"Fallo en Inserción: la conexión está cerrada"

En el CommandBehavior pongo Default y me vuelve a fallar.

Y si no cierro DataReader me sale algo similar a esto:
"Insert failed: There is already an open DataReader
associated with this Connection which must be closed
first".


Qué puedo hacer ?.
#2 Anonimo
21/05/2004 - 14:27 | Informe spam
Yo inicio una transacción, y hago una serie de inserts, y
en un momento tengo que leer el valor de una tabla porque
neceisto su valor y por eso utilizo datareader para hacer
la select. Y ahí es cuando tengo el problema. Quizá no
debería hacerlo así ?


Mostrar la cita
estás con un
Mostrar la cita
mensaje
Mostrar la cita
#3 José Miguel Torres
21/05/2004 - 15:07 | Informe spam
Sería más conveniente, si te es posible, captar todos los datos necesarios
con dataReader, por ejemplo, primero y luego realizar la insercciones en una
única transacción.

A parte de que te funcionará, tendrás abierta la trans un determinado tiempo
menos...

Salduos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es

escribió en el mensaje
news:102ae01c43f2e$fd5d6b60$

Yo inicio una transacción, y hago una serie de inserts, y
en un momento tengo que leer el valor de una tabla porque
neceisto su valor y por eso utilizo datareader para hacer
la select. Y ahí es cuando tengo el problema. Quizá no
debería hacerlo así ?


Mostrar la cita
estás con un
Mostrar la cita
mensaje
Mostrar la cita
#4 Rodrigo Meneses
21/05/2004 - 15:50 | Informe spam
El problema radica en que cuando inicias una transacción que hace
operaciones tipo "update" sobre un conjunto de tablas (Upd1, Upd2, Upd3)
pero en el medio deseas hacer operaciones de lectura "select" el "select"
debe unirse a la transacción ya que si no ocurriría un deadlock. Así q sí es
conveniente que utilices transacciones con el DataReader.
Saludos,
-Rodrigo Meneses
Arquitecto de Sotware
www.vedantek.com



"José Miguel Torres" <jtorres_diaz~~ARROBA~~terra.es> wrote in message
news:
Mostrar la cita
una
Mostrar la cita
tiempo
Mostrar la cita
#5 Anonimo
24/05/2004 - 09:03 | Informe spam
Pero cómo soluciono mi problema con el DataReader:

Mostrar la cita
un
Mostrar la cita
fallar.
Mostrar la cita
Ads by Google
Search Busqueda sugerida