Xml de config

06/01/2005 - 01:50 por MAXI | Informe spam
Hola gente, estoy necesitando armar un XML de configuracion donde tendre:

BDD 1
Cadena de conexion1
Cadena de conexion2
Usuario
Clave

BDD 2

..


Pregunta, como puedo hacer para leer bien este XML y que aparezca en un
desplegable el nombre de la BDD pero que al seleccionarlo pueda entrar a sus
items (cadena de conexion1, cadena de conexion2, etc)


Gracias chicos




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

Preguntas similare

Leer las respuestas

#1 SqlRanger
06/01/2005 - 12:13 | Informe spam
Antes de poder responderte bien, necesito que me digas algunas cosas:

1) ¿Esos datos de configuración tienen que estar en el archivo de
configuración de la aplicación, o sea, en el App.Config o podrían estar en
un archivo xml aparte?

2) ¿Hay sólo un usuario y una clave para cada base de datos o el usuario y
la clave son para una cadena de conexión?

Saludos:

Jesús López
MVP


"MAXI" escribió en el mensaje
news:eZz$
Hola gente, estoy necesitando armar un XML de configuracion donde tendre:

BDD 1
Cadena de conexion1
Cadena de conexion2
Usuario
Clave

BDD 2

..


Pregunta, como puedo hacer para leer bien este XML y que aparezca en un
desplegable el nombre de la BDD pero que al seleccionarlo pueda entrar a


sus
items (cadena de conexion1, cadena de conexion2, etc)


Gracias chicos




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)



Respuesta Responder a este mensaje
#2 Maxi
06/01/2005 - 18:38 | Informe spam
Hola Jesus, la idea es que este en un archivo aparte.

2) El usuario y la clave son para una cadena de conexion, el tema es asi: al
iniciar mi aplicacion tengo

Bdd - User - Pass, aca doy la posibilidad de conexion de confianza o no,
si es de confianza usare la cadena1, si no es de confianza usare la cadena 2
+ user + pass.

Un abrazo y gracias


Salu2
Maxi


"SqlRanger" escribió en el mensaje
news:Ofz0yC%
Antes de poder responderte bien, necesito que me digas algunas cosas:

1) ¿Esos datos de configuración tienen que estar en el archivo de
configuración de la aplicación, o sea, en el App.Config o podrían estar en
un archivo xml aparte?

2) ¿Hay sólo un usuario y una clave para cada base de datos o el usuario y
la clave son para una cadena de conexión?

Saludos:

Jesús López
MVP


"MAXI" escribió en el mensaje
news:eZz$
Hola gente, estoy necesitando armar un XML de configuracion donde tendre:

BDD 1
Cadena de conexion1
Cadena de conexion2
Usuario
Clave

BDD 2

..


Pregunta, como puedo hacer para leer bien este XML y que aparezca en un
desplegable el nombre de la BDD pero que al seleccionarlo pueda entrar a


sus
items (cadena de conexion1, cadena de conexion2, etc)


Gracias chicos




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)







Respuesta Responder a este mensaje
#3 SqlRanger
08/01/2005 - 22:36 | Informe spam
Bueno Maxi, pues podrías tener un archivo xml con un contenido similar a
este:

<?xml version="1.0"?>
<DataBases>
<DataBase Name="DB1">
<ConnectionString
Value="data source=(local);initial catalogÛ1;Integrated Security=SSPI"
Trusted="True" />
<ConnectionString
Value="data source=(local);initial catalogÛ1"
Trusted="False"
User="user1"
Password="pass1" />
</DataBase>
<DataBase Name="DB2">
<ConnectionString
Value="data source=(local);initial catalogÛ2;Integrated Security=SSPI"
Trusted="True" />
<ConnectionString
Value="data source=(local);initial catalogÛ2"
Trusted="False"
User="user2"
Password="pass2" />
</DataBase>
<DataBase Name="DB3">
<ConnectionString
Value="data source=(local);initial catalogÛ3;Integrated Security=SSPI"
Trusted="True" />
<ConnectionString
Value="data source=(local);initial catalogÛ3"
Trusted="False"
User="user3"
Password="pass3" />
</DataBase>
</DataBases>

Luego escribiríamos unas clases similares a estas:

Public Class XmlDataBases
Inherits CollectionBase


Public Sub Load(ByVal xmlFileName As String)

Dim xmlDoc As New Xml.XmlDocument
xmlDoc.Load(xmlFileName)
Me.Clear()
For Each xmlElemDataBase As Xml.XmlElement In
xmlDoc.SelectNodes("/DataBases/DataBase")
Dim xmlDataBase As New XmlDataBase
xmlDataBase.Name = xmlElemDataBase.Attributes("Name").Value
Add(xmlDataBase)
For Each xmlElemConnectionString As Xml.XmlElement In
xmlElemDataBase.SelectNodes("ConnectionString")
Dim xmlConnectionString As New XmlConnectionString
With xmlConnectionString
.Value xmlElemConnectionString.Attributes("Value").Value
.Trusted Boolean.Parse(xmlElemConnectionString.Attributes("Trusted").Value)
If Not .Trusted Then
.User xmlElemConnectionString.Attributes("User").Value
.Password xmlElemConnectionString.Attributes("Password").Value
End If
End With
xmlDataBase.Add(xmlConnectionString)
Next
Next
End Sub

Public Sub Save(ByVal xmlFileName As String)
Dim xmlDoc As New Xml.XmlDocument
xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", String.Empty,
String.Empty))
Dim RootElem As Xml.XmlElement = xmlDoc.CreateElement("DataBases")
xmlDoc.AppendChild(RootElem)
For Each xmlDataBase As XmlDataBase In Me
Dim xmlElemDataBase As Xml.XmlElement xmlDoc.CreateElement("DataBase")

xmlElemDataBase.Attributes.Append(xmlDoc.CreateAttribute("Name")).Value xmlDataBase.Name
RootElem.AppendChild(xmlElemDataBase)
For Each xmlConnectionString As XmlConnectionString In
xmlDataBase
Dim xmlElemConnectionString As Xml.XmlElement xmlDoc.CreateElement("ConnectionString")

xmlElemConnectionString.Attributes.Append(xmlDoc.CreateAttribute("Value")).V
alue = xmlConnectionString.Value

xmlElemConnectionString.Attributes.Append(xmlDoc.CreateAttribute("Trusted"))
.Value = xmlConnectionString.Trusted.ToString
If Not xmlConnectionString.Trusted Then

xmlElemConnectionString.Attributes.Append(xmlDoc.CreateAttribute("User")).Va
lue = xmlConnectionString.User

xmlElemConnectionString.Attributes.Append(xmlDoc.CreateAttribute("Password")
).Value = xmlConnectionString.Password
End If
xmlElemDataBase.AppendChild(xmlElemConnectionString)
Next
Next
xmlDoc.Save(xmlFileName)
End Sub

Default Public Property Item(ByVal index As Integer) As XmlDataBase
Get
Return List.Item(index)
End Get
Set(ByVal Value As XmlDataBase)
List(index) = Value
End Set
End Property

Public Function Add(ByVal xmlDataBase As XmlDataBase)
List.Add(xmlDataBase)
End Function

End Class

Public Class XmlDataBase
Inherits CollectionBase

Private mName As String
Public Property Name() As String
Get
Return mName
End Get
Set(ByVal Value As String)
mName = Value
End Set
End Property

Default Public Property Item(ByVal index As Integer) As
XmlConnectionString
Get
Return List.Item(index)
End Get
Set(ByVal Value As XmlConnectionString)
List.Item(index) = Value
End Set
End Property

Public Function Add(ByVal xmlConnectionString As XmlConnectionString)
Return Me.List.Add(xmlConnectionString)
End Function

End Class

Public Class XmlConnectionString
Private mValue As String
Private mTrusted As Boolean
Private mUser As String
Private mPassword As String
Public Property Value() As String
Get
Return mValue
End Get
Set(ByVal Value As String)
mValue = Value
End Set
End Property

Public Property Trusted() As Boolean
Get
Return mTrusted
End Get
Set(ByVal Value As Boolean)
mTrusted = Value
End Set
End Property

Public Property User() As String
Get
Return mUser
End Get
Set(ByVal Value As String)
mUser = Value
End Set
End Property

Public Property Password() As String
Get
Return mPassword
End Get
Set(ByVal Value As String)
mPassword = Value
End Set
End Property
End Class

Lo he probado en un formulario y ha funcionado bien:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Dim dbs As New XmlDataBases
dbs.Load("..\ConnectionStrings.xml")

For Each db As XmlDataBase In dbs
Debug.WriteLine("Base de datos: " & db.Name)
For Each cns As XmlConnectionString In db
Debug.WriteLine(vbTab & "Value: " & cns.Value)
Debug.WriteLine(vbTab & "Trusted: " & cns.Trusted)
Debug.WriteLine(vbTab & "User: " & cns.User)
Debug.WriteLine(vbTab & "Password: " & cns.Password)
Next
Next

dbs.Save("..\ConnectionStrings.xml")
MsgBox("Prueba concluida con éxito")

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
End Sub

Saludos:

Jesús López
MVP


"Maxi" escribió en el mensaje
news:ubza$
Hola Jesus, la idea es que este en un archivo aparte.

2) El usuario y la clave son para una cadena de conexion, el tema es asi:


al
iniciar mi aplicacion tengo

Bdd - User - Pass, aca doy la posibilidad de conexion de confianza o no,
si es de confianza usare la cadena1, si no es de confianza usare la cadena


2
+ user + pass.

Un abrazo y gracias


Salu2
Maxi


"SqlRanger" escribió en el mensaje
news:Ofz0yC%
> Antes de poder responderte bien, necesito que me digas algunas cosas:
>
> 1) ¿Esos datos de configuración tienen que estar en el archivo de
> configuración de la aplicación, o sea, en el App.Config o podrían estar


en
> un archivo xml aparte?
>
> 2) ¿Hay sólo un usuario y una clave para cada base de datos o el usuario


y
> la clave son para una cadena de conexión?
>
> Saludos:
>
> Jesús López
> MVP
>
>
> "MAXI" escribió en el mensaje
> news:eZz$
>> Hola gente, estoy necesitando armar un XML de configuracion donde


tendre:
>>
>> BDD 1
>> Cadena de conexion1
>> Cadena de conexion2
>> Usuario
>> Clave
>>
>> BDD 2
>>
>> ..
>>
>>
>> Pregunta, como puedo hacer para leer bien este XML y que aparezca en un
>> desplegable el nombre de la BDD pero que al seleccionarlo pueda entrar


a
> sus
>> items (cadena de conexion1, cadena de conexion2, etc)
>>
>>
>> Gracias chicos
>>
>>
>>
>>
>> Maxi
>>
>> Buenos Aires - Argentina
>> Desarrollador .NET 3 Estrellas
>> Microsoft User Group (MUG)
>>
>>
>>
>
>


Respuesta Responder a este mensaje
#4 SqlRanger
08/01/2005 - 23:45 | Informe spam
Por cierto, podrías tener un listbox enlazado al xmlDataBases mostrando los
nombres de las bases de datos y un DataGrid enlazado a la xmlDataBase
seleccionada en el listbox mostrando las propiedades de cada
xmlConnectionString.

para ello escribiríamos un código como este:

Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim dbs As New XmlDataBases
dbs.Load("..\ConnectionStrings.xml")
Me.ListBox1.DisplayMember = "Name"
Me.ListBox1.DataSource = dbs
End Sub

Public ReadOnly Property SelectedDataBase() As XmlDataBase
Get
Return Me.ListBox1.SelectedItem
End Get
End Property

Public ReadOnly Property SelectedConnectionString() As
XmlConnectionString
Get
Return Me.BindingContext(SelectedDataBase).Current
End Get
End Property

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Me.DataGrid1.DataSource = SelectedDataBase
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
MsgBox(Me.SelectedConnectionString.Value)
End Sub


Si no quieres que salgan todas las propiedades de xmlConnectionString en el
datagrid puedes usar tableStyles. El MappingName del DataGridTableStyle
debería ser "xmlDataBase".


Saludos:

Jesús López
MVP
Respuesta Responder a este mensaje
#5 MAXI
21/01/2005 - 01:33 | Informe spam
Sos un Genio!!! por eso te aprecio tanto :-), es justo lo que necesito
:-DDDD, mil gracias y nos leemos



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

"SqlRanger" escribió en el mensaje
news:%23$g%
Bueno Maxi, pues podrías tener un archivo xml con un contenido similar a
este:

<?xml version="1.0"?>
<DataBases>
<DataBase Name="DB1">
<ConnectionString
Value="data source=(local);initial catalogÛ1;Integrated Security=SSPI"
Trusted="True" />
<ConnectionString
Value="data source=(local);initial catalogÛ1"
Trusted="False"
User="user1"
Password="pass1" />
</DataBase>
<DataBase Name="DB2">
<ConnectionString
Value="data source=(local);initial catalogÛ2;Integrated Security=SSPI"
Trusted="True" />
<ConnectionString
Value="data source=(local);initial catalogÛ2"
Trusted="False"
User="user2"
Password="pass2" />
</DataBase>
<DataBase Name="DB3">
<ConnectionString
Value="data source=(local);initial catalogÛ3;Integrated Security=SSPI"
Trusted="True" />
<ConnectionString
Value="data source=(local);initial catalogÛ3"
Trusted="False"
User="user3"
Password="pass3" />
</DataBase>
</DataBases>

Luego escribiríamos unas clases similares a estas:

Public Class XmlDataBases
Inherits CollectionBase


Public Sub Load(ByVal xmlFileName As String)

Dim xmlDoc As New Xml.XmlDocument
xmlDoc.Load(xmlFileName)
Me.Clear()
For Each xmlElemDataBase As Xml.XmlElement In
xmlDoc.SelectNodes("/DataBases/DataBase")
Dim xmlDataBase As New XmlDataBase
xmlDataBase.Name = xmlElemDataBase.Attributes("Name").Value
Add(xmlDataBase)
For Each xmlElemConnectionString As Xml.XmlElement In
xmlElemDataBase.SelectNodes("ConnectionString")
Dim xmlConnectionString As New XmlConnectionString
With xmlConnectionString
.Value > xmlElemConnectionString.Attributes("Value").Value
.Trusted > Boolean.Parse(xmlElemConnectionString.Attributes("Trusted").Value)
If Not .Trusted Then
.User > xmlElemConnectionString.Attributes("User").Value
.Password > xmlElemConnectionString.Attributes("Password").Value
End If
End With
xmlDataBase.Add(xmlConnectionString)
Next
Next
End Sub

Public Sub Save(ByVal xmlFileName As String)
Dim xmlDoc As New Xml.XmlDocument
xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", String.Empty,
String.Empty))
Dim RootElem As Xml.XmlElement = xmlDoc.CreateElement("DataBases")
xmlDoc.AppendChild(RootElem)
For Each xmlDataBase As XmlDataBase In Me
Dim xmlElemDataBase As Xml.XmlElement > xmlDoc.CreateElement("DataBase")

xmlElemDataBase.Attributes.Append(xmlDoc.CreateAttribute("Name")).Value > xmlDataBase.Name
RootElem.AppendChild(xmlElemDataBase)
For Each xmlConnectionString As XmlConnectionString In
xmlDataBase
Dim xmlElemConnectionString As Xml.XmlElement > xmlDoc.CreateElement("ConnectionString")

xmlElemConnectionString.Attributes.Append(xmlDoc.CreateAttribute("Value")).V
alue = xmlConnectionString.Value

xmlElemConnectionString.Attributes.Append(xmlDoc.CreateAttribute("Trusted"))
.Value = xmlConnectionString.Trusted.ToString
If Not xmlConnectionString.Trusted Then

xmlElemConnectionString.Attributes.Append(xmlDoc.CreateAttribute("User")).Va
lue = xmlConnectionString.User

xmlElemConnectionString.Attributes.Append(xmlDoc.CreateAttribute("Password")
).Value = xmlConnectionString.Password
End If
xmlElemDataBase.AppendChild(xmlElemConnectionString)
Next
Next
xmlDoc.Save(xmlFileName)
End Sub

Default Public Property Item(ByVal index As Integer) As XmlDataBase
Get
Return List.Item(index)
End Get
Set(ByVal Value As XmlDataBase)
List(index) = Value
End Set
End Property

Public Function Add(ByVal xmlDataBase As XmlDataBase)
List.Add(xmlDataBase)
End Function

End Class

Public Class XmlDataBase
Inherits CollectionBase

Private mName As String
Public Property Name() As String
Get
Return mName
End Get
Set(ByVal Value As String)
mName = Value
End Set
End Property

Default Public Property Item(ByVal index As Integer) As
XmlConnectionString
Get
Return List.Item(index)
End Get
Set(ByVal Value As XmlConnectionString)
List.Item(index) = Value
End Set
End Property

Public Function Add(ByVal xmlConnectionString As XmlConnectionString)
Return Me.List.Add(xmlConnectionString)
End Function

End Class

Public Class XmlConnectionString
Private mValue As String
Private mTrusted As Boolean
Private mUser As String
Private mPassword As String
Public Property Value() As String
Get
Return mValue
End Get
Set(ByVal Value As String)
mValue = Value
End Set
End Property

Public Property Trusted() As Boolean
Get
Return mTrusted
End Get
Set(ByVal Value As Boolean)
mTrusted = Value
End Set
End Property

Public Property User() As String
Get
Return mUser
End Get
Set(ByVal Value As String)
mUser = Value
End Set
End Property

Public Property Password() As String
Get
Return mPassword
End Get
Set(ByVal Value As String)
mPassword = Value
End Set
End Property
End Class

Lo he probado en un formulario y ha funcionado bien:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Dim dbs As New XmlDataBases
dbs.Load("..\ConnectionStrings.xml")

For Each db As XmlDataBase In dbs
Debug.WriteLine("Base de datos: " & db.Name)
For Each cns As XmlConnectionString In db
Debug.WriteLine(vbTab & "Value: " & cns.Value)
Debug.WriteLine(vbTab & "Trusted: " & cns.Trusted)
Debug.WriteLine(vbTab & "User: " & cns.User)
Debug.WriteLine(vbTab & "Password: " & cns.Password)
Next
Next

dbs.Save("..\ConnectionStrings.xml")
MsgBox("Prueba concluida con éxito")

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
End Sub

Saludos:

Jesús López
MVP


"Maxi" escribió en el mensaje
news:ubza$
Hola Jesus, la idea es que este en un archivo aparte.

2) El usuario y la clave son para una cadena de conexion, el tema es asi:


al
iniciar mi aplicacion tengo

Bdd - User - Pass, aca doy la posibilidad de conexion de confianza o
no,
si es de confianza usare la cadena1, si no es de confianza usare la
cadena


2
+ user + pass.

Un abrazo y gracias


Salu2
Maxi


"SqlRanger" escribió en el mensaje
news:Ofz0yC%
> Antes de poder responderte bien, necesito que me digas algunas cosas:
>
> 1) ¿Esos datos de configuración tienen que estar en el archivo de
> configuración de la aplicación, o sea, en el App.Config o podrían estar


en
> un archivo xml aparte?
>
> 2) ¿Hay sólo un usuario y una clave para cada base de datos o el
> usuario


y
> la clave son para una cadena de conexión?
>
> Saludos:
>
> Jesús López
> MVP
>
>
> "MAXI" escribió en el mensaje
> news:eZz$
>> Hola gente, estoy necesitando armar un XML de configuracion donde


tendre:
>>
>> BDD 1
>> Cadena de conexion1
>> Cadena de conexion2
>> Usuario
>> Clave
>>
>> BDD 2
>>
>> ..
>>
>>
>> Pregunta, como puedo hacer para leer bien este XML y que aparezca en
>> un
>> desplegable el nombre de la BDD pero que al seleccionarlo pueda entrar


a
> sus
>> items (cadena de conexion1, cadena de conexion2, etc)
>>
>>
>> Gracias chicos
>>
>>
>>
>>
>> Maxi
>>
>> Buenos Aires - Argentina
>> Desarrollador .NET 3 Estrellas
>> Microsoft User Group (MUG)
>>
>>
>>
>
>






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida