23. december 2004 - 17:50Der er
7 kommentarer og 1 løsning
Dataset, hvordan fungerer det?
Til alle Hardcode dataset personer...
Jeg roder stadig rundt i disse datasets. Jeg har opbygget et system, og da vi nu skal udvikle version 2, kigger jeg lidt paa om dataset kunne vaere en afloeser til alt db kode jeg har skrevet.
Jeg har imidlertid svaert ved at se fordelen ved at bruge datasets i min app. Jeg elsker ideen om at baade ny og "gammel" data bliver gemt indtil accept/rejectchanges bliver kaldt, men jeg syntes ogsaa at det medfoerer et stort overhead i kode og eksekvering (correct me if I am wrong). Det hele munder sikkert ud i min forkerte opfattelse af hvordan dataset og isaer dataadapteren fungerer.
Er der nogen der kan give mig nogle SUPER links (gerne noget produktion kode) til kode (ikke det normale sample kode) saaledes jeg kan se hvor det virkelig er staerkt.
Her er 2 eksempler paa hvor jeg mangler forstaaelse indenfor dataset:
1) Jeg har en InsertPart SP. Den indsaetter en part i en tabel og returnerer IdPart(autoincrement value i db) i en output param. Jeg vil nu lave en insertCommand der eksekverer denne SP, og automatisk opdaterer IdPart i datasettet med den returneret vaerdi. Er dette muligt?
2) Jeg har 2 tabeller, elever og lærere.
Elever ------ IdElev, IdLærer, ElevNavn.
Lærere ------ IdLærer og LærerNavn.
Jeg skal nu "fill" mit dataset. Jeg vil gerne have een elev ud -samt hans tilhoerende laerer - hvis navn starter med "Ma".
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
Her retuneres dit dataset. Men du skal se et dataset som en databse i hukommelsen. Et dataset kan have flere datatables og som jeg forstår det vil du få en datatable. En tabel joinet af lærrere og elever. Hvad der kommer i datasettet oghænger jo helt af din sql så i dit tilfælde vil du fylde dit dataset med en sql der joiner eller subselecter de to tabeller du arbejder med.
Hvordan du vil lave den kan jeg ikke svare på da jeg skal vide mere. Men kan se det er noget med LIKE "%ma". Men kig lige på Microsoft Data Application Block det er mit råd så er der ikke meget hocus pokus andet end din sql.
Har du flere tabeller kan du få adgang til dem via ds.Tables["mytable"] eller ds.Tables[0];
Segato>> Interessant, men min tvivl ligger andetsteds(samarbejde mellem datasets og dataadapter). Alle eksempler jeg ser med MDAB, goer lige praecis det jeg gerne vil undgaa. Jeg er som sagt groen.
Pt. bruger jeg foelgende SQL saetning og ved brug af datareader laeser jeg fra db ind i memory: SELECT * FROM Lærere l INNER JOIN elever e ON l.IdLærer = e.IdLærer WHERE ElevNavn LIKE 'ma%'
Hvordan konverterer jeg dette til dataset og dataadapter. SKAL jeg bruge 2 SQL saetninger?
SQL-1) SELECT * FROM elever WHERE ElevNavn LIKE 'ma%'
SQL-2) SELECT l.* FROM Lærere l INNER JOIN elever e ON l.IdLærer = e.IdLærer WHERE ElevNavn LIKE 'ma%'
Efter hver af disse eksekveringer, skal der kaldes Fill metoden paa dataadapteren, ik' sandt, eller er der en anden vej?
For mig virker dette som et stort overhead, efterom SQL-2) er en gentagelse af SQL-1). Kan man med en SQL saetning fylde datasettet her? Kan det ikke goeres via een sql saetning?
Det var lige det min sætning er bare en enkelt query der returnere det hele fra begge tabeller. Selvfølgelig for du duplering af elev data i hver tuple hvor læreren er forskelligt
jtbroad>> ok, det er vist mig der ikke forklarer nok.. Det er ikke SQL delen der er et problem, det er indlaesningen til datasettet. Kan du med den SQL saetning du har og med et dataset ydfylde det, saaledes at det i datasettet ligger i 2 tabeller?
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.