none
Problemas al cambiar de cadena de conexion RRS feed

  • Pregunta

  • Hola!! buenas...

    Estaba haciendo una aplicacion con bases en sql server 2008 y lo tenia en el proyecto y todo, con ordenes de guardar y eso en procedimientos almacenados en un structuredataset, pero cambie la cadena de conexion:

    Esta cadena:

        Public Shared Function LeerCadenaConexion() As String
            Try
                Return Configuration.ConfigurationManager.ConnectionStrings(1).ConnectionString()
            Catch ex As Exception
                Throw (ex)
            End Try
        End Function

    Por esta:

     Dim cn As New SqlConnection("Server=.\SQLExpress;AttachDbFilename=c:\Mibase.mdf; Trusted_Connection=Yes")

    Pero el problema es que ahora no me reconece las instrucciones SQL almacenadas en el structuredataset del proyecto y no se de otro metodo para almacenar, editar, eliminar y demas. 

    Si alguien me da una mano como hacer para introducir el structuredataset de nuevo o como llamarlo con esa cadena de conexion se lo agradeceria mucho.

    Gracias de antemano.

    viernes, 18 de mayo de 2012 17:51

Respuestas

  • "DR01" escribió:

    > Pero el problema es que ahora no me reconece las instrucciones SQL
    > almacenadas en el structuredataset del proyecto y no se de otro
    > metodo para almacenar, editar, eliminar y demas.
    >

    Hola:

    Siempre y cuando la base de datos Mibase.mdf ubicada en la raíz de la unidad C: (esa no es una buena ubicación para una base de datos) tenga la misma estructura de tablas, campos, índices, etc., es decir, que se trate de una copia exacta de la base de datos original, sería cuestión que le asignaras la nueva cadena de conexión a la propiedad ConnectionString del objeto Connection existente en el objeto TableAdapter que vas a utilizar.

    En el evento Load del formulario, y antes de llamar a cualquier método Fill, ejecutarías:

       Me.NombreTableAdapter.Connection.ConnectionString = _
          "Server=.\SQLExpress;AttachDbFilename=c:\Mibase.mdf;Trusted_Connection=Yes"
    
       Me.NombreTableAdapter.Fill(Me.NombreDataSet.NombreTabla)
    

    O si lo prefieres:

      Dim cn As New SqlConnection( _
          "Server=.\SQLExpress;AttachDbFilename=c:\Mibase.mdf;Trusted_Connection=Yes"
    
      Me.NombreTableAdapter.Connection = cn
    

    Por supuesto, en la instancia con nombre llamada SQLExpress no puede existir otra base de datos con el mismo nombre que aquella que deseas adjuntar o "atachar".

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    • Marcado como respuesta DR01 sábado, 19 de mayo de 2012 17:40
    sábado, 19 de mayo de 2012 7:41
    Moderador

Todas las respuestas

  • ese metodo que comentas dond elo ubicabas ?

    y porque lo cambiaste por una cadena fija en el codigo que instancia unn SqlConnection ?

    o sea si usas un dataset tipado eso no tiene sentido

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 18 de mayo de 2012 18:24
  • "DR01" escribió:

    > Pero el problema es que ahora no me reconece las instrucciones SQL
    > almacenadas en el structuredataset del proyecto y no se de otro
    > metodo para almacenar, editar, eliminar y demas.
    >

    Hola:

    Siempre y cuando la base de datos Mibase.mdf ubicada en la raíz de la unidad C: (esa no es una buena ubicación para una base de datos) tenga la misma estructura de tablas, campos, índices, etc., es decir, que se trate de una copia exacta de la base de datos original, sería cuestión que le asignaras la nueva cadena de conexión a la propiedad ConnectionString del objeto Connection existente en el objeto TableAdapter que vas a utilizar.

    En el evento Load del formulario, y antes de llamar a cualquier método Fill, ejecutarías:

       Me.NombreTableAdapter.Connection.ConnectionString = _
          "Server=.\SQLExpress;AttachDbFilename=c:\Mibase.mdf;Trusted_Connection=Yes"
    
       Me.NombreTableAdapter.Fill(Me.NombreDataSet.NombreTabla)
    

    O si lo prefieres:

      Dim cn As New SqlConnection( _
          "Server=.\SQLExpress;AttachDbFilename=c:\Mibase.mdf;Trusted_Connection=Yes"
    
      Me.NombreTableAdapter.Connection = cn
    

    Por supuesto, en la instancia con nombre llamada SQLExpress no puede existir otra base de datos con el mismo nombre que aquella que deseas adjuntar o "atachar".

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    • Marcado como respuesta DR01 sábado, 19 de mayo de 2012 17:40
    sábado, 19 de mayo de 2012 7:41
    Moderador
  • Leandro, SoftJaén; mil gracias a los 2.

    Me solucionó el problema lo que comento SoftJaén, gracias.

    El tema de la ubicacion de la base de datos solo es relativo, era un ejemplo nada mas en realidad la base de datos va a estar alojada en una unidad de red mapeada en cada usuario llamada "Z" o cualquier otra. 

    Gracias!!...

    sábado, 19 de mayo de 2012 17:40
  • Saludos, no coloques bases de datos (no otro archivo ajeno al OS) en la raiz del disco C: o cualquier unidad mapeada a una carpeta compartida en la red, usa en su lugar carpetas.

    De hecho no creo recomendable colocar una base de datos en una carpeta compartida.

    Saludos


    __________________
    Edward Ocando
    Desarrollador .NET
    "Medir el progreso del desarrollo de un programa por líneas de código, es como medir el avance de la construcción de un avión en toneladas."
    <small>Bill Gates</small>

    __________________
    www.soydesarrollador.net

    sábado, 19 de mayo de 2012 18:47