1. Jag ser inte det nu men jag tror inte att man kan läsa från samma databaskoppling samtidigt.
2. Du borde kunna läsa det med att ändra dina SQL Queries lite så att du inte behöver använda två stycken.
5 svar · 511 visningar · startad av inspiro
Går det att ha en nästlad datareader? Jag får inte till det:
SqlDataReader myReader1 = myCommand1.ExecuteReader();
while(myReader.Read()) {
SqlDataReader myReader2 = myCommand2.ExecuteReader();
while (myReader2.Read()) {
.......
}
}
}
Jag får felet att "There is already an open DataReader associated with this Command which must be closed first."
1. Jag ser inte det nu men jag tror inte att man kan läsa från samma databaskoppling samtidigt.
2. Du borde kunna läsa det med att ändra dina SQL Queries lite så att du inte behöver använda två stycken.
Tack, så var det! Anledningen till den här lösningen är mina begränsade sql-kunskaper tyvärr... det skulle bli en så himla komplex sql annars som jag inte får till.
Hur stora prestandaförluster gör man med 2 separerade sql-connections istället för en egentligen?
inspiro skrev:
Hur stora prestandaförluster gör man med 2 separerade sql-connections istället för en egentligen?
Det beror på hur din övriga kod ser ut samt hur många besökare som du har. Det betyder att om du är ensam besökare så är det ingen skillnad, är det många besökare så tar det lite mer prestanda, men knappast något som du kommer märka av, tror nog att du skulle få bättre prestana med bättre SQL-kunskaper, eftersom det brukar vara dåligt skriva SQL satser som tar tid, inte skapa en koppling till databasen.
- M
Så det är med andra ord OK att "slösa" lite på själva uppkopplingarna mot databasen, om jag får uttrycka mig så? Eller kan de ta slut? Har för mig att jag läst någonstans om "poolingproblem" eller vad det heter, att det blir fel för att det blir för många kopplingar mot databasen samtidigt? Hur många samtidiga kopplingar kan man ha? Jag använder sql server express.
Gör annars en querie med två olika select statements för de olika tabellerna du behöver få ut.
Sen kan du använda dig av DataReader.NextResult() för att komma åt andra tabellen när du är klar med den första. På så sätt används bara en databaskoppling och en DataReader men du får ut båda tabellerna sekvensiellt.