Avatar billede jesper_dk Nybegynder
25. juli 2005 - 11:53 Der er 5 kommentarer og
1 løsning

design af database adgang

Hej

Jeg har et program hvor jeg gemmer min data i en database.

jeg har et objekt som jeg udfylder med data fra min db, i dette objekt ligger en samling af nogle andre objekter, som jeg også udfylder med værdier fra min db.

Altså jeg laver et database kald på mit første objekt, så kalder jeg min constructor på det objekt, som så igen laver et database kald o.s.v.

mit problem er så at jeg får en fejl der siger:

There is already an open DataReader associated with this Connection which must be closed first.

og det er der jo også, jeg har løst problemet ved at lave en ny connection for hver niveau.

Men mit spørgsmål er så nu er det den mest optimale løsning, eller er der nogen de har en beder løsning. Skal jeg evt. lave min kode om så jeg ikke har flere data base kald inde i hinanden.

Gode råd/forslag efterlyses.
Avatar billede arne_v Ekspert
25. juli 2005 - 12:05 #1
Jeg kan se 3 muligheder:

1)  bruge seperate connectiosn som du gør

2)  læse alt data og lukke DataReader inden du starter på at hente andre
    objekter så du kan nøjes med en connection

3)  bruge en SELECT med JOIN som henter alt data med en enkelt query
    og så fordeles data ud i forskellige objekter
Avatar billede softspot Forsker
25. juli 2005 - 16:51 #2
...og alternativ nr. 3 er vel at foretrække, idet den nok performer bedst.

Databasen kan givetvis samle data hurtigere i et kald end komponenten kan i flere kald, selvom det er mindre opslag.
Avatar billede arne_v Ekspert
25. juli 2005 - 17:04 #3
#3 vil performe bedst, men passer ikke altid lige godt ind i object domain modellen
Avatar billede jesper_dk Nybegynder
25. juli 2005 - 21:30 #4
min sql statment vil blive alt for kompleks hvis jeg skal bruge #3, så jeg tror jeg holder mig til #1

poing?, smid et svar
Avatar billede arne_v Ekspert
25. juli 2005 - 22:08 #5
ok
Avatar billede arne_v Ekspert
25. juli 2005 - 22:08 #6
husk at kompleks SQL for menneske øjne og langsom SQL for databasen ikke nødvendigvis
er det samme
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