PDA

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.

MarcoGG
19-06-2008, 13:37
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

MarcoGG
19-06-2008, 14:03
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:

MarcoGG
19-06-2008, 14:44
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.

MarcoGG
23-06-2008, 09:42
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