A vueltas con .NET: Modificar Connection Strings en Runtime
Esto del .NET me parece alucinante, la de cosas que se pueden llegar a hacer de forma rápida y sencilla es enorme. Sin hablar de la cantidad ingente de ejemplos y ayuda que podemos encontrar por Internet. Sin embargo, me he encontrado con un problema.
En una aplicación que estoy haciendo necesito poder leer los datos de diferentes bases de datos en función del dominio en el que se ha autentificado el usuario. Las bases de datos corresponden a diferentes fábricas alrededor del mundo así que necesito poder cambiar el ConnectionString que utilizan los DataSets en tiempo de ejecución. Después de indagar ésto es lo que he conseguido, espero que alguien le ayude.
Lo primero que debemos hacer es declarar los diferentes ConnectionString que podemos utilizar, en nuestro caso lo haremos dentro de My Project -> Settings.

En mi caso tengo 3 Connection Strings, uno de ellos (ConnectionString) es el que utilizan los diferentes DataSets y los otros dos (SpainConnectionString y ChinaConnectionString) son los diferentes valores que puede tomar la primera variable. En la misma pantalla de Settings le damos a ViewCode y saltaremos al código de la clase Settings que nos permite utilizar eventos específicos de esa clase.
Namespace My
'This class allows you to handle specific events on the settings class:
' The SettingChanging event is raised before a setting's value is changed.
' The PropertyChanged event is raised after a setting's value is changed.
' The SettingsLoaded event is raised after the setting values are loaded.
' The SettingsSaving event is raised before the setting values are saved.
Partial Friend NotInheritable Class MySettings
Public WriteOnly Property ChangeConnectionString() As String
Set(ByVal Value As String)
My.Settings("ConnectionString") = Value
End Set
End Property
End Class
End Namespace
Éste es el código que modifica el valor de la variable ConnectionString (también se puede utilizar para cambiar culaquier valor de la clase My Setting), ahora debemos llamar a éste proceso con el valor que nos interese.
En nuestro caso miramos el dominio del usuario y el rango de IP’s del usuario.
Private Sub GetDomain(ByVal HostName As String) 'Buscamos el dominio al que corresponde la ip que tenemos asignada, 'no el dominio al que nos hemos 'logueado desde Windows Dim Direcciones As IPAddress() = Dns.GetHostAddresses(HostName) 'Recorremos todos los posibles dominios y cargamos el portal del dominio correspondiente Select Case Mid(Mid(Direcciones(0).ToString(), 9), 1, InStr(Mid(Direcciones(0).ToString(), 9), ".") - 1) Case My.Settings.SPAIN_IP My.Settings.ChangeConnectionString = My.Settings.SPAINConnectionString Case My.Settings.CHINA_IP My.Settings.ChangeConnectionString = My.Settings.CHINAConnectionString Case Else 'Si llegamos aqui es que no estamos en ningun dominio conocido, por tanto cerramos el portal End Select End Sub
Espero que os sea de ayuda.
Mi Manual de Windows Phone
Ultimos Posts
- Windows Phone Developer Tools 7.1 Beta
- Cambia el tema del emulador de Windows Phone
- Algunos tutoriales de Windows Phone 7 (Parte 3)
- Grabador de voz en Windows Phone
- Cambiar teclado de TextBox en WP7
- Sobre el diseño Metro para programadores de WP7
- Base de datos XML en Windows Phone 7
- Windows Phone 7 Isolated Storage Explorer
- Almacenamiento local de datos en Windows Phone
- Uso del control Popup en WP7
Windows Phone
Nuestras lecturas
Windows Phone Blog
Blankenblog
Libre y extremo




