327 messaggi dal 06 settembre 2002
Ho il problema di costruire la stringa di connessione leggendo i valori dal file app.config.exe, devo permettere all'utente di sovrascrivere i valori quando necessario inserendo le varie pass, nome database, user e server. in 4 text box su un form, recuperare i dati inseriti e renderli persistenti anche dopo la sessione fino a quando non saranno cambiati.

Ho visto qualche cosa nel resource pack ma mi pare davvero troppo complicato, va bene che questo scrive, carica,modifica aggiunge coppie, con un migliao di righe di codice ,ma possibile che non ci sia un modo più diretto e semplice?

mi pare impossibile che nessuno si sia trovato di fronte a questo problema, mi potete dare una mano?

ciao grazie
Carica il file config con XmlDocument (System.Xml). Una volta caricato con il metodo Load, cerca il nodo (attributo, elemento o quello che) con GetElementByName o usa le regole xpath con SelectSingleNode.
Una volta trovato cambi il valore con la proprietà Value.
Chiami il metodo Save e finito

Ciao

Il mio blog
Homepage
27 messaggi dal 30 aprile 2002
Qui trovi un articolo che spiega come scrivere nel file app.config.
http://www.ugidotnet.org/tips/tips_read.aspx?ID=112

HTH
--
Stefano Magni [VC#.IT]
www.visualcsharp.it
Il portale italiano della programmazione C# e .NET
http://www.ugidotnet.org/partners/contributors.aspx?ID=3010
Weblog: http://www.ugidotnet.org/blog.aspx?MemberID=3010
327 messaggi dal 06 settembre 2002
si l'ho provato, anzi lo sto provando, ma non mi cambia i valori:
carico nel evento form_load chiavi e valori:
sub form_load..
Dim sv As String = AppConfig.Get("TBoxSName.Text")
Dim ...
Dim....
'poi nell'evento button_click cerco cerco di modificarli:
Private Sub ButtConn_Click..
Dim sv As String
Dim ...
Dim ...
AppConfig.Set("TBoxSv.Text", sv)
App...
App...
'compongo la stringa di connessione
Dim MySqlConn As SqlConnection = New SqlConnection
MySqlConn.ConnectionString = "server=" & sv & _
";database=" & ct & ";uid=" & uid & _
";pwd=" & pw
MySqlConn.Open()

'poi le classi così come me le avete segnalate su ugidotnet
Public Class AppConfig

Public Shared Function [Get](ByVal key As String) As String
Dim str As String = ""
Dim doc As New XmlDocument
doc.Load(Application.ExecutablePath + ".config")
Dim nodeKey As String = "//appSettings/add[@key='" + key + "']/@value"
If Not (doc.DocumentElement.SelectSingleNode(nodeKey) Is Nothing) Then
str = doc.DocumentElement.SelectSingleNode(nodeKey).Value
End If

Return str

End Function 'Get
Public Shared Sub [Set](ByVal key As String, ByVal keyValue As String)
Dim doc As New XmlDocument
doc.Load(Application.ExecutablePath + ".config")
Dim nodeKey As String = "//appSettings/add[@key='" + key + "']/@value"
If Not (doc.DocumentElement.SelectSingleNode(nodeKey) Is Nothing) Then
doc.DocumentElement.SelectSingleNode(nodeKey).Value = keyValue
Else
Dim add As XmlElement = doc.CreateElement("add")
Dim attrkey As XmlAttribute = doc.CreateAttribute("key")
attrkey.Value = key
Dim val As XmlAttribute = doc.CreateAttribute("value")
val.Value = keyValue
add.Attributes.Append(attrkey)
add.Attributes.Append(val)
doc.DocumentElement.SelectSingleNode("//appSettings").AppendChild(add)
End If
doc.Save(Application.ExecutablePath + ".config")

End Sub 'Set
End Class 'AppConfig

Risultato Keyvalue è nothing, non carica ne modifica i valori immessi nella form. ne quelli immessi preventivente nel .config
ciao grazie

Modificato da lobax il 18 dicembre 2003 14.45 -
327 messaggi dal 06 settembre 2002
Ok Pubblico per qualcuno se serve, grazie a Stefano Magni e alla sua tip su ugidotnet.
Finestra di dialogo riutilizzabile, per la connessione al database:

Private Sub ButtConn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtConn.Click

Dim uid As String = Me.TBoxUser.Text
Dim ct As String = Me.TBoxdb.Text
Dim pw As String = Me.TBoxPass.Text
Dim sv As String = Me.TboxSName.Text
AppConfig.Set("TBoxdb.Text", ct)
AppConfig.Set("TBoxUser.Text", uid)
AppConfig.Set("TBoxPass.Text", Pw)
AppConfig.Set("TboxSName.Text", sv)
Dim MySqlConn As SqlConnection = New SqlConnection
MySqlConn.ConnectionString = "server=" & sv & _
"; database=" & ct & ";uid=" & uid & _
";pwd= " & Pw
MySqlConn.Open()


MsgBox("ok")

End Sub

Public Class AppConfig
Public Shared Sub [Set](ByVal key As String, ByVal keyValue As String)
Dim doc As New XmlDocument
doc.Load(Application.ExecutablePath + ".config")
Dim nodeKey As String = "//appSettings/add[@key='" + key + "']/@value"
If Not (doc.DocumentElement.SelectSingleNode(nodeKey) Is Nothing) Then
doc.DocumentElement.SelectSingleNode(nodeKey).Value = keyValue
Else
Dim add As XmlElement = doc.CreateElement("add")
Dim attrkey As XmlAttribute = doc.CreateAttribute("key")
attrkey.Value = key
Dim val As XmlAttribute = doc.CreateAttribute("value")
val.Value = keyValue
add.Attributes.Append(attrkey)
add.Attributes.Append(val)
doc.DocumentElement.SelectSingleNode("//appSettings").AppendChild(add)
End If
doc.Save(Application.ExecutablePath + ".config")

End Sub
End Class

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.