none
Cerrar un data reader RRS feed

  • Pregunta

  • Hola 

    tengo un pequeño problema realice un reporte u utilicé un datareader pero cuando quiero hacer mas reportes dice que debo cerrarlo porque ya fue usada en la conexion, el problema que no puedo cerrar la conexion porque mi aplicacion cuando inicia abre la conexion.

     esta es la consulta que realizo cuando quiero hacer otro no puedo

    cmdMySQL = new MySqlCommand("SELECT CLICOD, CLINOM FROM fcli WHERE CLIPAR1 = ?par1 AND CLIPAR2 = ?par2  ", OrigenDatos.MySqlCnn);

    dr=cmdMySQL.ExecuteReader();

    Espero que me puedan ayudar a resolver esto

    grax

    jueves, 13 de mayo de 2010 14:42

Todas las respuestas

  • Usa esto:

    dr.Close();


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    jueves, 13 de mayo de 2010 14:48
    Moderador
  • hola..

    te explico cuando haces una conexion abres esa conexion y enseguida de ejecutar un metodo fill o cuando abres un reader debes de cerrar la conexion para evitar problemas de cuellos de botella primero y para que no hay stacknullreference..entre otros..

    no estas detallando mucho pero si ejecutas el comandoes decir executenonquery()

    luego pondrias

    conexion.close()

    luego de ejecutar el reader pondrias

    reader.close();

    y no te preocupes por cuando inicia la aplicacion supongo haras una cargaa al inicio pues cargaran los datos y luego debes cerrar...eso no significa que se pierden los datos o algo parecido...
    Pablo González Desarrollo de Sistemas. Ecuasoftware.Net Ecuador.
    jueves, 13 de mayo de 2010 14:49
  • hola 

    Luisisss , podria poner el codigo completo para analisar a ver donde esta el error , gracias 

     

    enmanuel grullard

    repubica dominicana

    viernes, 14 de mayo de 2010 14:42
  • Yo te aconsejo que mejor que un dr.Close hagas un Dispose, así liberarás el recurso de memoria. Luego ya es cuestión de asignar la nueva "select" y ejecutarla. Sería algo así:

     

    dr.Dispose();

    cmdMySQ.CommandText = "SELECT * FROM ...";  // La segunda select para el report

    dr = cmdMySQL.ExecuteReader();

     

     

    Si te das cuenta no hace falta cerrar ni la conexión ni el comando (cmdMySQ), simplemente cerrar y liberar el DataReader. Pruebalo porque yo lo tengo así y no me da ningún problema :)

    lunes, 17 de mayo de 2010 7:29