none
Cambiar Base De Datos En Tiempo De Ejecución RRS feed

  • Pregunta

  • ASP.NET 4.0 / Visual C# 2010

    Hola a todos

    El siguiente Código muestra el Error: InvalidOperationException

    SqlConnectioncnx = new SqlConnection(); protected void Conexion_Click(object sender, EventArgs e) { cnx.ConnectionString = "Server=Local01\\SQLEXPRESS; Integrated Security=True"; cnx.Open(); } protected void BaseDeDatos_Click(object sender, EventArgs e) { cnx.ChangeDatabase("Empresa"); }

    Al agregar el Modificador static todo va bien.

    static SqlConnectioncnx = new SqlConnection();

    Se entiende que el Modificador static permite que una Variable De Objeto (en este caso cnx),

    1º sea accesible en todos lo Métodos de la Página o Clase WebForm, conservando su valor, el que luego podría ser modificado en alguno de los Métodos desde los cuáles es accedida, y

    2º pueda ser utilizada directamente sin instanciar un Objeto a partir de la Clase.

    Ademas si la Sentencia de cambio de Base De Datos (...ChangeDatabase(...);) está en el mismo Método no se produce ningún Error.

    ¿Por qué se produce esto? o ¿Cuál es la función completa del Modificador static?

    Desde ya Muchísimas Gracias

    Skar.2007

    jueves, 18 de junio de 2015 12:12

Respuestas

  • hola

    NUNCA definas un objeto SqlConnection como static

    recuerda que esto hace que se comparta para todo el sitio, se comporta como el objeto Application

    quita ese static de tu codigo asp.net

    podrias definir el string en el objeto Session para conservarlo para el usuario en particular, pero que sea un dato simple un string, no un objeto de conexion, un SqlConnection

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 18 de junio de 2015 12:53