Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Är detta en OK lösning?

Postades av 2004-06-18 14:03:14 - Marcus Johansson, i forum asp.net generellt, Tråden har 6 Kommentarer och lästs av 490 personer

Har en rekursiv funktion som hämtar barnen till en node.
Skickar in NodeID, en ArrayList som fylls med barnens ID. Denna ArrayList retuneras.
Har ett db objekt som skapar databaskoppling och har metod för att retunera ett command objekt.

Det jag skulle vilja veta är om detta är en bra/ok lösning prestandamässig. Hur gör jag annars?
Skulle vilja ha lite kommentarer om hur jag gör med db koppling vid varje iteration, ska man skicka runt denna eller vad är bäst?


Dim myList As New ArrayList()
myList = myNode.getUserNodeList(101, myList)

'Hämtar barn till denna node. Retunerar ArrayList
Public Function getUserNodeList(ByVal NodeID As Int32, ByRef List As ArrayList) As ArrayList
Dim db As New database()
Dim fldID, i As Int16
Dim myDataAdapter As New OleDbDataAdapter()
Dim myDataSet As New DataSet()
Dim myDataRow As DataRow
db.Init_DB()

SQL = "SELECT id FROM nodes WHERE parent_id = " & NodeID & " ORDER BY parent_id ASC"
myDataAdapter.SelectCommand = db.getCommand(SQL)
myDataAdapter.Fill(myDataSet, "Nodes")
myDataAdapter.Dispose()
db.Destroy_DB()

db = Nothing
myDataAdapter = Nothing
For Each myDataRow In myDataSet.Tables("Nodes").Rows
List.Add(myDataRow("ID").ToString())
Call getUserNodeList(CInt(myDataRow("ID").ToString()), List)
Next
myDataSet = Nothing
myDataRow = Nothing
Return List
End Function


Svara

Sv: Är detta en OK lösning?

Postades av 2004-06-18 14:09:08 - Andreas Håkansson

Marcus,

Kollade inte riktigt igenom hela utan såg direkt en sak som du måste åtgärda - du kan (ska/bör) inte öppna en connection till din databas och köra ett nytt query varje "varv" i rekursionen. Se till att göra <b>ett</b> query där du hämtar ner alla Node information. Den informationen bearbetar du sedan rekursivt.

Du kan anväven använda dig av relations egenskaperna i ett <b>DataSet</b> för att underlätta berarbetningen av dina noder. Men som sagt, inte öppna en connection hela tiden även om connection pooling underlättar prestandamässigt men det gör inte dina queryes som du kör hela tiden.


Svara

Sv: Är detta en OK lösning?

Postades av 2004-06-18 14:37:51 - Marcus Johansson

Det där med DataSet relationer är lite överkurs för mig just nu tror jag.
Ändrade lite i koden, öppnar databaskoplling innan funktionsanrop och skickader sedan med kopplingen till min funktion. Borde väl bli något bättre.

Tack!


Svara

Sv: Är detta en OK lösning?

Postades av 2004-06-18 15:23:52 - Andreas Håkansson

Marucs,

Saken är att det inte finns någon fördel med att <b>hela tiden</b> anropa databasen. Gör en select-sats som vaäljer ut <b>alla</b> noder ditt ditt <b>DataSet</b> sen kan du bearbeta informationen i detta <i>lokalt</b> eftersom det är som ett disconnected recordset. Hämta informationen en gång, bearbeta den i oändligheten.


Svara

Sv: Är detta en OK lösning?

Postades av 2004-06-18 17:13:14 - Marcus Johansson

Problemet för mig är att jag inte lyckas lösa en sql-sats som plockar ut alla dessa noder.

Denna tar ju endast en nivå ner i trädet, jag vet ju aldrig hur många nivåer som finns.
Använder en Access db, vet ej om det går att göra en SP med någon loop i eller linknande i ACCESS.

SELECT *
FROM nodes n1
INNER JOIN nodes n2 ON n1.id = n2.parent_id
WHERE n1.id = 101

Tack ändå!


Svara

Sv: Är detta en OK lösning?

Postades av 2004-06-18 19:35:49 - Andreas Håkansson

Marcus,

Men om du plockar bort din <b>WHERE</b>-sats då? Den gör juh ett urval på datamängden och då är det klart att inte all information returneras? =)


Svara

Sv: Är detta en OK lösning?

Postades av 2004-06-18 19:52:47 - Marcus Johansson

ok, nu fattar jag vad du menar!

Ska genast testa med ett DataSet.

Tack igen.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
679
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies