Avatar billede hmortensen Nybegynder
06. februar 2007 - 21:51 Der er 12 kommentarer og
1 løsning

DataReader i DataReader

Hej

Hvis jeg har en metode der henter en masse kunder, og jeg for hver kunde vil hente deres ordrer, får jeg en fejl om at der allerede er en åben reader.

MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
  Kunde k = new Kunde(...);
  HentKundesOrdrer(k);
}

HentKundesOrdrer() er opbygget på samme måde som ovenstående stump.

Skal jeg lave to connections, eller er der en hel anden måde at gøre det på?
Avatar billede Syska Mester
06. februar 2007 - 21:55 #1
SELECT K.KundeID, KO.KundeOrdreID, Flerefelter FROM Kunder K
INNER JOIN KundeOrdre KO ON K.KundeID = KO.KundeID

Men så kommer det som en samlet i en datareader, ved ikke hvordan du vil behandle din data ....

men ellers kan du blive nød til at lave 2 connections ...

// ouT
Avatar billede kalp Novice
06. februar 2007 - 21:55 #2
jeg plejer at åbne en ny forbindelse

du kan evt lave cmd.ExecuteReader(CommandBehavior.CloseConnection);
Avatar billede kalp Novice
06. februar 2007 - 21:56 #3
og så åbner jeg desuden mine connections via. using
Avatar billede Syska Mester
06. februar 2007 - 21:58 #4
kalp... CloseCon ... men han bliver jo stadig nød til at have 2 cons, med mindre jeg har overset noget ...

// ouT
Avatar billede kalp Novice
06. februar 2007 - 22:00 #5
buzzzz >> ja det ved jeg og også det jeg skriver:)

er lidt i tvivl om man overhovedet behøver closecon når man bruger using da den jo gerne skulle rydde op efter sig selv.

oh well.. men ja er enig i der skal åbnes en ny forbindelse hvilket også er sådan jeg har gjort det hidtil
Avatar billede Syska Mester
06. februar 2007 - 22:19 #6
CloseCon skulle ikke være nødvendig så ... da CloseCon jo bare gør sådan at når readeren lukkes, lukkes forbindelsen også ...

kalp: Lød bare som et nyt foreslag mht til CloseCon .. da du skrev "evt" ... men vi er enige .. :-) Thats what matter

// ouT
Avatar billede arne_v Ekspert
06. februar 2007 - 22:51 #7
normalt skal man bruge 2 connections (af ret indlysende aarsager)
Avatar billede hmortensen Nybegynder
07. februar 2007 - 09:50 #8
Vil det være en løsning/fordel at bruge et dataset?

Smid nogle svar.
Avatar billede kalp Novice
07. februar 2007 - 10:37 #9
buzzzz kan få min del.. han var et par sekunder hurtigere:)

med hensyn til dit nye spørgsmål så foretrækker jeg datareader og har derfor ikke brugt så meget tid på datasets.. så er svar skyldig her.
Avatar billede arne_v Ekspert
07. februar 2007 - 16:41 #10
Et DataSet (evt. typed) er en hurtig loesning hvor man ikke skal til at lave
egne data klasser og operere med collections.

Til en hurtig 2 layer GUI er det sikkert helt fint. Jeg ville ikke bruge det
til et stort projekt. Det bryder ligesom lidt adskillelsen af lag.
Avatar billede hmortensen Nybegynder
07. februar 2007 - 17:02 #11
Ok.

Min klasse med ovenstående metode har et privat felt der holder forbindelsen, hvor jeg så bare åbner og lukker den i mine metoder. Så laver jeg bare en ny forbindelse i den ene metode, og fortsætter med at bruge det globale connection object i resten af metoderne?
Avatar billede Syska Mester
08. februar 2007 - 01:19 #12
svar fra mig
Avatar billede arne_v Ekspert
08. februar 2007 - 02:09 #13
pas på med ikke lokale connections

instanserne af klassen er ikke thread safe
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