View Full Version : [VB.Net]Insert into.... xml
RaouL_BennetH
18-06-2008, 16:45
Ciao a tutti :)
Sto cercando un modo per inserire dei dati originati dall'inserimento di valori provenienti da un form in un file xml.
Cioè, dovrei fare:
1) Inserisci i valori in file xml
2) Se tutto è andato bene, inserisci i dati dall'xml nel database.
In pratica, una sorta di tabella/e temporanea/e dove far transitare i dati prima di inserirli sul db.
Questo per evitare l'uso di tabelle temporanee in un db di tipo access.
Grazie a tutti.
RaouL.
Io utilizzo questa procedura :
Poniamo tu abbia una semplice Form con 2 TextBox - txt_Nome e txt_Cognome e debba gestire un semplice elenco di "Persone" :
1. Questo codice crea il file XML iniziale :
Dim ScriviXML As XmlTextWriter
ScriviXML = New XmlTextWriter("C:\FILE.XML", Nothing)
ScriviXML.WriteStartDocument()
ScriviXML.WriteStartElement("Persone")
ScriviXML.WriteEndElement()
ScriviXML.WriteEndDocument()
ScriviXML.Close()
Dove "Persone" è chiaramente la Root del doc.
Nota che se il file FILE.XML è già presente e non vuoto questa operazione lo sovrascriverà. Va eseguita una sola volta, o in ogni occasione si voglia resettare il file-serbatoio...
Se invece non esiste, lo creerà da zero. ;)
2. Questo invece lo puoi associare ad ogni Click di un pulsante "Applica", quando tutti i campi della Form sono pronti all'invio :
Dim TempXML As New XmlDocument()
TempXML.Load("C:\FILE.XML")
Dim Persona As XmlElement = TempXML.CreateElement("Persona")
TempXML.DocumentElement.AppendChild(Persona)
Dim Nome As XmlElement = TempXML.CreateElement("Nome")
Nome.InnerText = txt_Nome.Text
Persona.AppendChild(Nome)
Dim Cognome As XmlElement = TempXML.CreateElement("Cognome")
Cognome.InnerText = txt_Cognome.Text
Persona.AppendChild(Cognome)
TempXML.Save("C:\FILE.XML")
Perciò ogni Click in pratica esegue una INSERT nel file XML preesistente. ;)
Per l'upload verso DB ci sono varie tecniche possibili, intanto prova questo.
^TiGeRShArK^
19-06-2008, 13:52
fatti un favore e passa a .net 3.5 :asd:
Dim contacts As XElement = _
<contacts>
<contact contactId="2">
<firstName>Barry</firstName>
<lastName>Gottshall</lastName>
</contact>
<contact contactId="3">
<firstName>Armando</firstName>
<lastName>Valdes</lastName>
</contact>
</contacts>
basta quindi aggiungerlo ad un XDocument e chiamare il metodo save passandogli il nome del file ed hai finito :p
http://www.hookedonlinq.com/LINQtoXML5MinuteOverview.ashx
fatti un favore e passa a .net 3.5 :asd:
Bravo. Ma lui non ha parlato di Framework 3.5.
Se stesse usando VB.NET 2001 ?
Il mio metodo funziona anche con Framework 1.0. :asd: :asd: :asd:
^TiGeRShArK^
19-06-2008, 14:26
Bravo. Ma lui non ha parlato di Framework 3.5.
Se stesse usando VB.NET 2001 ?
Il mio metodo funziona anche con Framework 1.0. :asd: :asd: :asd:
Ma io so già che sta usando il framework 2.0 :asd:
E' che lo voglio istigare a passare all'ultima versione che semplifica NOTEVOLMENTE le cose in diversi ambiti, soprattutto quando hai a che fare con la manipolazione dei dati e con gli XML :Prrr:
Ma io so già che sta usando il framework 2.0 :asd:
E' che lo voglio istigare a passare all'ultima versione che semplifica NOTEVOLMENTE le cose in diversi ambiti, soprattutto quando hai a che fare con la manipolazione dei dati e con gli XML :Prrr:
Io invece non lo sapevo.
Se uno mi chiede .NET gli passo la soluzione più compatibile e generica...
Mi ritornano in mente un paio di esperienze tragiche ( quando ti viene imposto dall'alto il COSA, il COME, e CON_CHE_STRUMENTI lo devi fare ).
Sai quante volte ho istigato io... E invece... :D :Prrr: :D
^TiGeRShArK^
19-06-2008, 14:48
Io invece non lo sapevo.
Se uno mi chiede .NET gli passo la soluzione più compatibile e generica...
Mi ritornano in mente un paio di esperienze tragiche ( quando ti viene imposto dall'alto il COSA, il COME, e CON_CHE_STRUMENTI lo devi fare ).
Sai quante volte ho istigato io... E invece... :D :Prrr: :D
pure a me tornano in mente certe esperienze oscene :asd:
Però alla fine rompendo le palle n volte a chi di dovere, dopo che ti manda a cacare n-1 volte, di solito qualcosina si muove..... :D
Per raoul ovviamente non ho idea come sia la sua situazione, ma se può rompere le balle in tal senso non fa mai male :D
RaouL_BennetH
22-06-2008, 16:36
Grazie ad entrambi :D
Come già sa TigerShark, sto usando il .NET 2.0 e, almeno per il momento, non posso passare ad altro e non per mia volontà :(
Devo dire comunque che ho dovuto abbandonare quest'idea perchè le persone interessate non l'hanno accettata.
Io volevo fare questo:
L'applicazione, prevede l'inserimento di più dati in diverse tabelle, e quest'inserimento non è detto che si concluda in una sola volta ma può avvenire in più riprese.
Perciò avevo proposto di inserire i dati temporanei in file xml, e solo alla fine di tutti i vari inserimenti, prendere i dati e passarli sul db.
E' un pò la stessa logica delle tabelle temporanee.
Anche questa però, secondo la mia modestissima esperienza, non è praticabile considerando che il db è un file access 2000.
Le persone in oggetto quindi, hanno preferito intraprendere la strada del delete, update e re-insert ogni volta che si riapre l'applicazione.
Questo non significa che non ho tratto tesoro da i vostri suggerimenti.
Davvero grazie !
RaouL.
sto usando il .NET 2.0 e, almeno per il momento, non posso passare ad altro e non per mia volontà :(
Devo dire comunque che ho dovuto abbandonare quest'idea perchè le persone interessate non l'hanno accettata.
...
E' un classico... :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.