Avatar billede Simon Praktikant
14. august 2004 - 15:10 Der er 3 kommentarer og
1 løsning

xml-fil som database fra VisualStudio .NET

Hej
Hvordan bruger jeg en xml-fil som database fra Visual Studio .NET
Jeg vil gerne indsætte data med sql, og få recordsets ud, på nøjagtig samme måde som ved en anden database (MySQL, eller MSDE...)
Kodeeksempler eller tutors er velkomne, gerne i c#
Avatar billede snepnet Nybegynder
14. august 2004 - 17:14 #1
Hej simi :o)

Et meget simpelt udgangspunkt :

Du kan skabe et dataset ud fra en xml-fil ved

DataSet ds = new DataSet();
ds.LoadXml(<xml-path>);

Så kan du arbejde med data i DataSet-objektet, som så afgjort giver gode muligheder for den slags, og når du så har lyst til at gemme data igen - kan du gøre det med

ds.WriteXml(<xml-path>);

Du kan sagtens lave en select på en tabel i et dataset, og der er ingen problemer med at indsætte og opdatere data.

Der er rigtig mange muligheder (både serverside og clientside) for den slags, så sig endelig til hvis du har noget konkret du kunne tænke dig at realisere.

Mvh
Avatar billede Simon Praktikant
15. august 2004 - 20:10 #2
Tak for det fine og fyldestgørende svar. Jeg har nu fået det til at virke.
Så hvis du smider et svar får du pointene.

Jeg har et andet spørgsmål:
Når jeg henter et dataset fra en database er datatyperne defineret, eks. int og char. Men når jeg henter data fra en xml-fil, så er de ikke defineret. Kan jeg definere dem i xml-filen, således at de også er det i datasettet?
Avatar billede snepnet Nybegynder
15. august 2004 - 20:57 #3
Hej igen - du kan definere dig et skema (du kan gøre det med VS), men du kan også programmatisk sørge for at definere dit dataset. F.eks. sådan her :

// en tabel :

    public class SampleTable : DataTable
    {
        new public const string TableName = "SampleTableName";
       
        public const string FldId        = "FldId";
        public const string FldString        = "FldString";
       
        public SampleTable() : base(TableName)
        {
            InitClass();
        }

        private void InitClass()
        {
            DataColumn c = this.Columns.Add(FldId, typeof(int));
            c.AllowDBNull = false;
            c.AutoIncrement = true;
            c.AutoIncrementSeed = 0;
            c.AutoIncrementStep = -1;

            DataColumn[] pKeys = {c};
            this.PrimaryKey = pKeys;       
       
            c = this.Columns.Add(FldString, typeof(string));
            c.AllowDBNull = true;
            c.DefaultValue = "SampleString";
        }
    }

// og et dataset

    public class SampleDataSet : DataSet
    {
        public SampleDataSet() : base()
        {
            InitClass();
        }

        public void InitClass()
        {
            this.DataSetName = "SampleDataSet";
            this.Tables.Add(new SampleTable());           
        }
    }

så kan du lave en :

SampleDataSet ds = new SampleDataSet();
ds.LoadXml(..... osv...

Så er der typer og hele balladen, og desuden en snild programmatisk adgang som f.eks. (med udgangspunkt i ds) :

ds.Tables[SampleTable.TableName].Rows[X][SampleTable.FldString] = "test";

Det er så heller ikke nødvendigt sidenhen at rette i koden, hvis du skulle få lyst til at ændre kolonnenavne nede i basen og den slags.

Mvh
Avatar billede Simon Praktikant
16. august 2004 - 13:49 #4
Tak for svaret. Jeg arbejder videre med det. Så vender jeg jo nok tilbage med flere spørgsmål senere. Men tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester