• Domingo 22 de Diciembre de 2024, 12:39

Autor Tema:  Error Al Insertar En Una Bd  (Leído 3829 veces)

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Error Al Insertar En Una Bd
« en: Miércoles 25 de Julio de 2007, 20:58 »
0
Buenas, tengo el siguiente problema.

Tengo esta funcion para realizar updates, insert o delete a una base de datos.

Código: Text
  1.  
  2.         public int EjecutarNonQuery(string sQuery, SqlConnection cnConexionSQL)
  3.         {
  4.             //Ejecuta una transaccion. (insert,update,delete)
  5.  
  6.             int iResultado;
  7.             SqlCommand cmSQL = new SqlCommand(sQuery, cnConexionSQL);
  8.  
  9.             iResultado = cmSQL.ExecuteNonQuery();
  10.             return iResultado;              
  11.         }
  12.  
  13.  


Los parametros son la sentencia que quiero ejecutar (en este caso era un INSERT) y la conexion que vengo usando.
Cuando la utilizo me sale el siguiente error:
"There is already an open DataReader associated with this Command which must be closed first."

En la aplicacion yo ya tengo un datareader abierto, pero no entiendo porque tengo que cerrarlo si en mi funcion no uso ningun
datareader.

Si o si tengo que cerrar el datareader?
Si me pueden despejar la duda se los agradezco.

saludos.

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Error Al Insertar En Una Bd
« Respuesta #1 en: Miércoles 25 de Julio de 2007, 21:28 »
0
Para realizar una consulta debes abrir la conexión el alguna parte.

Código: Text
  1. cnConexionSQL.Open();
  2.  

Luego para volver a ejecutar otra conexion debes cerrar la anterior.

Código: Text
  1. cnConexionSQL.Close();
  2.  

Quiza abres conexiones cada vez que realizas una consulta.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Error Al Insertar En Una Bd
« Respuesta #2 en: Miércoles 25 de Julio de 2007, 22:02 »
0
claro, yo la conexion la abro al iniciar la aplicacion y el SqlConnection que me devuelve lo uso durante todo el programa.

pero el problema creo que viene por el lado de un datareader que estoy utilizando.
recien para probar lo cerre y me hizo el insert de manera correcta.

pense que el executenonquery no tenia nada que ver con el datareader.

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Error Al Insertar En Una Bd
« Respuesta #3 en: Miércoles 25 de Julio de 2007, 22:26 »
0
Te recomiendo cerrar la conexion despues de cada ExecuteNonQuery, y abrirla antes de utilizarlo.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Error Al Insertar En Una Bd
« Respuesta #4 en: Jueves 26 de Julio de 2007, 13:54 »
0
si?, gracias, lo empezare a aplicar.

saludos.

x_reaccion

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Error Al Insertar En Una Bd
« Respuesta #5 en: Viernes 27 de Julio de 2007, 02:37 »
0
Hola

Si realmente llegas a necesitar tener mas de un datareader abierto creo que poniendo esto en tu conección puedes abrir mas de uno.


Código: Text
  1.  
  2. MultipleActiveResultSets=True
  3.  
  4.  

Ejemplo :

Código: Text
  1.  
  2. SqlConnection _ConnectionTo = new SqlConnection("Data Source=localhost\\instance; Initial Catalog=database; User Id=fuser; Password=fpassword; MultipleActiveResultSets=True");
  3.  
  4.  
u.u no quiero cumplir 20 T_T

tragokorto01

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Error Al Insertar En Una Bd
« Respuesta #6 en: Lunes 8 de Marzo de 2010, 23:54 »
0
"MultipleActiveResultSets=True"

muy buen dato, no sabia eso, has dado en el clavo  :good:

gracias,

pd: solo me registre para agradecer, ya se que es un post muy pasado.

berkut2009

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
    • http://www.qubitek.com.ar
Re: Error Al Insertar En Una Bd
« Respuesta #7 en: Martes 9 de Marzo de 2010, 20:15 »
0
Si estas ejecutando un DataReader antes de ejecutar esa consulta, cerralo.
miReader.Close();
 :)