Smidig datalagring med XML och .NET
Förord
I mitt arbete som utvecklare av Internetbaserade informationslösningar måste jag emellanåt utveckla små applikationer för ganska avgränsade uppgifter. Oftast handlar det om att bearbeta information på något vis och allt som oftast kräver detta att man sparar data på något sätt. Att använda sig av databaser är oftast det allra lättaste men ibland har man av någon anledning inte tillgång till någon databas och en alternativ lösning krävs då.Innehåll
»»
»
»
Innan .NET fanns, blev alternativet oftast något anpassat textbaserat filformat där jag lagrade informationen. Nackdelen var dock att det ofta blev krångligt att hålla reda på mycket information och det var det var alltför omständigt att bearbeta och filtrera informationen.
Jag har valt att skriva denna artikel med utgångspunkt i ett litet program för att hålla reda på kontaktuppgifter till mina vänner. Jag vill på ett smidigt sätt kunna lagra namn, mobilnummer och e-post. Vidare vill jag kunna lägga till och ta bort människor lätt och snabbt.
Mitt adressregister krävde alltså en liten smidig databasliknande lagringslösning. Samtidigt ville jag inte vara beroende av exempelvis en databas i Access eller MS SQL Server.
Då Microsoft utvecklade .NET förutsåg de att de behov jag har skulle uppstå. Eftersom en av huvudpunkterna i .NET var en standardiserad datahantering byggdes även smarta funktioner för att minska behovet av en databasmotor in i .NET Framework.
Ett av de användbara objekt för att hantera data som finns tillgängligt i .NET är DataSet. Ett DataSet fungerar på många sätt som en egen liten databas. Man kan exempelvis ha flera tabeller och det kan finnas relationer mellan tabeller. Det som gör ett DataSet till den optimala lösningen för våra behov är dock möjligheterna att lagra ett DataSet som XML.
För att lagra samt läsa ett DataSet sparat som XML använder man metoderna WriteXml samt ReadXml som finns under det DataSet du har skapat. Då du kallar på metoderna skickar du med ett strängargument som innehåller sökvägen där du vill spara ditt DataSet.
Nedan hittar du två väldigt enkla exempel på hur man sparar samt läser in DataSet. Samtliga exempel kräver att man lagt till ”using System.Data;” i filen.
Exempel för att spara ett DataSet som XML
Exempel för att läsa in ett tidigare skapat DataSet
I den exempelapplikation jag gjort tillgänglig för nedladdning kan du själv se hur man kan använda både ReadXml och WriteXml för att hantera informationen i ett DataSet.
Se exempelfil
Om du tycker att möjligheten att lagra DataSet som Xml verkar trevlig rekommenderar jag att du kikar igenom källkoden som självklart är väl kommenterad.
Jag har valt att skriva denna artikel med utgångspunkt i ett litet program för att hålla reda på kontaktuppgifter till mina vänner. Jag vill på ett smidigt sätt kunna lagra namn, mobilnummer och e-post. Vidare vill jag kunna lägga till och ta bort människor lätt och snabbt.
Behov
Mitt adressregister krävde alltså en liten smidig databasliknande lagringslösning. Samtidigt ville jag inte vara beroende av exempelvis en databas i Access eller MS SQL Server.
Lösning
Då Microsoft utvecklade .NET förutsåg de att de behov jag har skulle uppstå. Eftersom en av huvudpunkterna i .NET var en standardiserad datahantering byggdes även smarta funktioner för att minska behovet av en databasmotor in i .NET Framework.
Ett av de användbara objekt för att hantera data som finns tillgängligt i .NET är DataSet. Ett DataSet fungerar på många sätt som en egen liten databas. Man kan exempelvis ha flera tabeller och det kan finnas relationer mellan tabeller. Det som gör ett DataSet till den optimala lösningen för våra behov är dock möjligheterna att lagra ett DataSet som XML.
För att lagra samt läsa ett DataSet sparat som XML använder man metoderna WriteXml samt ReadXml som finns under det DataSet du har skapat. Då du kallar på metoderna skickar du med ett strängargument som innehåller sökvägen där du vill spara ditt DataSet.
Exempel
Nedan hittar du två väldigt enkla exempel på hur man sparar samt läser in DataSet. Samtliga exempel kräver att man lagt till ”using System.Data;” i filen.
Exempel för att spara ett DataSet som XML
// Skapa DataSet
DataSet myDataSet = new DataSet( ”MyContacts” );
// Skapa en ny tabell i mitt DataSet
myDataSet.Tables.Add( new DataTable(“Contact”) );
// Lägg till en kolumn av typen sträng
myDataSet.Tables[0].Columns.Add( new DataColumn( “Name” , typeof(System.String) ) );
// Skapa en ny rad och sätt värdet på kolumnen Name
DataRow martin = myDataSet.Tables[0].NewRow();
martin[“Name”] = “Martin Roth”;
// Lägg till den nyskapade raden i min tabell i DataSetet
myDataSet.Tables[0].Rows.Add( martin );
// Spara ned DataSetet som Xml
myDataSet.WriteXml( “contacts.xml” );
// Sparat och klart
Exempel för att läsa in ett tidigare skapat DataSet
// Skapa DataSet
DataSet myDataSet = new DataSet();
// Läs in DataSetet från Xml
myDataSet.ReadXml( ”contacts.xml” );
// Yihaa, all min tidigare data finns nu tillgängligt i myDataSet
Sammanfattning
I den exempelapplikation jag gjort tillgänglig för nedladdning kan du själv se hur man kan använda både ReadXml och WriteXml för att hantera informationen i ett DataSet. Se exempelfil
Om du tycker att möjligheten att lagra DataSet som Xml verkar trevlig rekommenderar jag att du kikar igenom källkoden som självklart är väl kommenterad.
Fredrik Klarqvist
Helt klart ett bra sätt att arbeta med data. Men tänkte bara tillägga att det gick alldeles utmärkt att arbeta med XML i ett Recordset från ADO 2.5 (tidigare versioner med?) och även då ladda det från en fil.
Magnus Olofsson
Tänk vilken tid jag sparade nu. Jag önskade bearbeta data på ett sätt som jag känner till och sen spara det i ett format som kan läsas av "vad som helst". Jag började kallsvettas vid tanken på att bygga upp egna xml-dokument från grunden, men se vad enkelt det var! Och nu kan jag fortsätta med mina invanda grepp från databasvärlden. =) Tusen tack för denna artikeln.