20. oktober 2004 - 11:50Der er
12 kommentarer og 1 løsning
tilgå xml-fil med sql
Jeg har tænkt mig at benytte en xml-fil som database, pga porterbarheden. Hvordan selecter og interter jeg data til og fra en xml-fil med SQL med visual studio .NET? Kodeeksempler er velkomne.
Tak for det. De data jeg får ud når jeg selecter noget ligger så i someRows som er af klassen DataRow[]. Kan jeg få den lavet om til typen DataSet i steddet for?
Nej ikke sådan direkte... Det er referencer til de rows der eksisterer i den tabel du har i dit dataset. Kan du give et hint om årsagen til at du gerne vil have dem som et nyt dataset ? (så kan det jo være at der er et alternativ).
Jeg er ved at udvikle en application som skal arbejde med data. Som database har jeg tænkt mig at benytte en xml-fil. Jeg er interesseret i at filtrere og søge på data.
Mht de parametre i select-metoden, er det så muligt at angive hvilke kolonner jeg vil have. Hvis nu jeg har et dataset med kolonnerne "navn", "adresse", "alder", "køn", og jeg så kun ønsker en liste med navne og adresser. Kan dette anføre inde i selelct-metoden?
ok - det var nu mest hvad der var årsagen til at du gerne ville have dine rækker over i et nyt dataset jeg tænkte på.
Merge kan være lidt farlig hvis du spørger mig, men det er self. afhængig af hvordan du arbejder med data... Prøv at se nedenstående eksempel :
// lidt til at hente og gemme data SqlConnection con = new SqlConnection(someConnString); SqlCommand selectCommand = new SqlCommand(someSelectCommandString, con);
SqlDataAdapter adapter = new SqlDataAdapter(selectCommand); SqlCommandBuilder comBuilder = new SqlCommandBuilder(adapter);
// fyld et dataset med data DataSet ds1 = new DataSet(); adapter.Fill(ds1);
// til til andet dataset DataSet ds2 = new DataSet(); ds2.Merge(ds1.Tables[0].Select(null, null, DataViewRowState.CurrentRows));
// lav en ændring i ds1 og opdater ds1.Tables[0].Rows[0]["Owner"] = "DS1"; adapter.Update(ds1);
// lav en ændring i ds2 og opdater ds2.Tables[0].Rows[0]["Owner"] = "DS2"; adapter.Update(ds2);
problemet er nu.... at i databasen er det det sidste der gælder (ds2), men i applikationen er der 2 datasets - i vid udstrækning ens, og begge med muligheden for at afstedkomme ændringer i databasen... de er bare ude af sync, hvilket kan medføre lidt ballade hvis man ikke er forsigtig.
men... det er selvfølgelig stærkt afhængigt af hvordan du bruger dine dataset i applikationen, og på hvilken måde ud opdaterer datakilden mv. hvis bare man holder styr på tingene sker der jo ikke noget, men hvis man har noget automatisering omkring sikring af konsistens mellem database og applikationsdata, kan det virke lidt risikabelt.
men... jeg vil som nævnt rigtig gerne høre hvorfor du har brug for dem i et nyt dataset.... altså hvorfor det er nødvendigt at det er et dataset.
jeg vil gerne have data over i dataset fordi de så kan vises i datagrid. en anden ting er at jeg har fået fat i en komponentpakka fra Infragistics, som indeholder "ultraChart" til at tegne grafter med. Denne tager også dataset som input.
forestillede mig også lidt af det var det det drejede sig om.... jeg synes du skal kigge lidt på DataViews istedet - det er sådan lidt mere "as intended" om du vil :
Du kan lave et DataView sådan her :
DataView dv = new DataView(someDataTable, ...); hvor ... er det samme som med Selec(...);
Så du kan gøre sådan her (for at tage samme eksempel som øverst):
DataView dv = new DataView(ds.Tables[0], "ID>10", "ID", DataViewRowState.CurrentRows);
Det kan du sagtens bruge som datasource til et dataset (og diverse infragistic-komponenter).
Hvis du bruger views istedet skal du ikke lave en kopi af dine data hver gang du udfører en select... Du har bare forskellige måder at se på de samme data.
tak for denne løsning. Jeg oprettede spørgsmålet påny, fordi jeg regnede med at der ikke blev svaret fordi det var landet i den forkerte katagori. Mange tak for hjælpen i øvrigt. Jeg ser på det om lidt
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.