Avatar billede Lasse Novice
23. december 2004 - 17:50 Der 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".

Hvordan vil man fylde sit dataset ud her?
Avatar billede Lasse Novice
23. december 2004 - 17:58 #1
har selv besvaret 1, hvilket godt kan lade sig goere...
Avatar billede segato Nybegynder
24. december 2004 - 11:35 #2
Hvis du bruger Microsoft Data Application Block kan du genrere dit dataset ud fra en linie kode.

SqlHelper.ExecuteDataset(connstr, CommandType.Text, dinSql);

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];
Avatar billede Lasse Novice
27. december 2004 - 18:58 #3
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?
Avatar billede jtbroad Nybegynder
06. januar 2005 - 11:42 #4
var det ikke bedre at vende din join om:-

Select * From Elever e inner join Lærere l on l.IdLærer = e.IdLærer
where ElevNavn like 'ma%'

???
Avatar billede Lasse Novice
06. januar 2005 - 19:16 #5
Jeg ville tro det er ligemeget, eftersom sql serveren selv finder ud af det (paa baggrund af statistics), eller er det mig som er forkert paa den...

Spoergsmaalet er simpelt... Hvordan fylder man 2 tabeller i ens dataset med en SQL query?
Avatar billede jtbroad Nybegynder
07. januar 2005 - 10:20 #6
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
Avatar billede Lasse Novice
07. januar 2005 - 19:10 #7
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?
Avatar billede Lasse Novice
15. marts 2008 - 18:24 #8
Lukker spg.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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