none
Exception y SqlConnection RRS feed

  • Pregunta

  • Hola buen dia aqui de nuevo molestando


    Tengo dos cuestiones que quiero exponer y espero alguien pueda decirme que hacer.

    La primera es la mas sencilla, Manejo de Excepciones estoy haciendo un sistema el cual marca excepciones válidas por ejemplo: Hacer una insercion a una tabla con claves duplicadas, me gustaria poder identificar el número de error lo cual no he podido ver donde obtenerlo si alguien sabe como hacerlo agradeceria la ayuda.

    La segunda es un poco mas complicada, En mi misma aplicacion (C# con SQL 2005 Express) uso una clase singleton para la conexion la cual tiene apertura de conexion, transaaciones, cierre de conexion, etc... pero al momento de cerrar la conexion primero le pongo .Close luego .Dispose y aunque el objeto conexion esta cerrado en  el monitos de actividad de SQL 2005 Express me sigue manteniendo la conexion y me pregunto que tengo que hacer para que realmente se cierre dicha conexion, Espero alguien sepa y quiera decirme

    Nota: Como comentario adicional... probe sin la clase singleton y hace lo mismo uso el objeto SqlConnection, si quieren mas datos se los puedo pasar

    Gracias por todo
    viernes, 23 de octubre de 2009 15:31

Respuestas

  • hola

    con respecto a tu primer problema puedo contante que si haces un catch de la exception SqlException en este tienes una propiedad

    ErrorCode  

    esta si haces dentro de catch in if diferenciarndo el codigo de clave duplicada podras separalo del resto
    por ahi ejcuta la primera vez el codigo para determinar cual es el codigo que deberas controlar

    try
    {
    }
    catch(SqlException ex)
    {
        if(ex.ErrorCode = <error codigo>)
           //tratas el problema del duplicado
    }
    catch(Exception ex)
    {
    }


    Con respecto a tu segundo problema, bueno la verdad es raro, se que el GC puede administrar tus objetos y destruirlos en concreto cuando este lo crea conveniente.

    Igual el problema no es del Sql Express, esta aplciacion que tiene el problema puede ser que sea un desarrollo web?
    si es ashi puede que el application pool este manteniendo el objeto.
    Si es una aplciacion web como persistes el singleton en un objeto Session, o en el Context de request?

    Igualmente cual seria el problema que estas teniendo, a la larga se produce algun error?
    sino se produce ojo que puede que el pool de conexiones deje algunas vivas porque en realidad las esta reutilizando, por eso no las cierra

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:34
    • Desmarcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:42
    • Marcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:42
    • Desmarcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:42
    • Marcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:43
    viernes, 23 de octubre de 2009 17:59

Todas las respuestas

  • hola

    con respecto a tu primer problema puedo contante que si haces un catch de la exception SqlException en este tienes una propiedad

    ErrorCode  

    esta si haces dentro de catch in if diferenciarndo el codigo de clave duplicada podras separalo del resto
    por ahi ejcuta la primera vez el codigo para determinar cual es el codigo que deberas controlar

    try
    {
    }
    catch(SqlException ex)
    {
        if(ex.ErrorCode = <error codigo>)
           //tratas el problema del duplicado
    }
    catch(Exception ex)
    {
    }


    Con respecto a tu segundo problema, bueno la verdad es raro, se que el GC puede administrar tus objetos y destruirlos en concreto cuando este lo crea conveniente.

    Igual el problema no es del Sql Express, esta aplciacion que tiene el problema puede ser que sea un desarrollo web?
    si es ashi puede que el application pool este manteniendo el objeto.
    Si es una aplciacion web como persistes el singleton en un objeto Session, o en el Context de request?

    Igualmente cual seria el problema que estas teniendo, a la larga se produce algun error?
    sino se produce ojo que puede que el pool de conexiones deje algunas vivas porque en realidad las esta reutilizando, por eso no las cierra

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:34
    • Desmarcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:42
    • Marcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:42
    • Desmarcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:42
    • Marcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:43
    viernes, 23 de octubre de 2009 17:59
  • hola aqui de nuevo escribiendo porque por una burrada mia borre la respuesta anterior jejeje


    Pues te decia (en el mensaje que se me borro) que la primera parte si me sirvió solo tuve que complementar con un poco de investigacion y listo ya lo adecue a lo que necesito.

    Por lo de la conexion a la base de datos realmente no me marca ningun error solo me extraño que al cerrar la conexion en mi aplicacion en SQL la mantuviera viva pero al salirme de toda la aplicacion (el proyecto no C#) si cierra la conexion... bueno mi singleton evita que se habran muchas conexiones por cada accion hecha por lo que no tengo problemas de conexiones solo mantengo una jejeje  mi proyecto es un Windows Form y doy gracias a todas las personas que apoyan en los foros ya que nos hacen la vida las facil.

    Cada dia que pasa me alegro de haberme decidido por C# como mi nuevo lenguaje de programacion.


    Saludos a todos
    • Marcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:41
    • Desmarcado como respuesta jhsreza viernes, 23 de octubre de 2009 19:43
    viernes, 23 de octubre de 2009 19:39