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


Flera recordsets

Postades av 2007-05-04 21:14:24 - Mattias Svensson, i forum asp - allmänt, Tråden har 7 Kommentarer och lästs av 2157 personer

Ang. optimering av databasen - jag har aldrig riktigt lärt mig SQL mer än enkla select, insert och update-uttryck, så jag har kört med flera recordsets där jag har operationer som innefattar mer än en tabell.

Hur dumt är det på en prestandaskala? Segar det ner siten mycket, slukar mycket minne? Eller är det okej?


Svara

Sv: Flera recordsets

Postades av 2007-05-04 21:21:46 - Johan Djupmarker

Nu beror detta på väldigt många saker, så det är svårt att säga hur det är i ett specifikt fall utan mer uppgifter. Men generellt brukar man få bäst prestanda med så få databasanrop som möjligt. Att frågorna blir lite komplexare brukar inte påverka.

/Johan


Svara

Sv:Flera recordsets

Postades av 2007-05-04 21:28:27 - Mattias Svensson

Jag öppnar alltså ett recordset, säg att jag tar fram kategorinummer från en tabell, sedan tar jag fram transaktioner från en annan tabell baserat på kategorinumret från första tabellen...

rs_kategorinummer
loopa tills EOF

rs_transaktionsdata WHERE kategorinummer=rs_kategorinummer
loopa tills EOF

...text som skriver ut transaktionsdata i en tabell i HTML....

loop

loop (tar fram nästa kategorinummer)

Är det smartare att göra något sådant här med SQL, eller kvittar det i princip?


Svara

Sv: Flera recordsets

Postades av 2007-05-04 21:37:54 - Johan Djupmarker

Detta ska du göra i en databasfråga istället. Förklara gärna tabellernas design, hur de är relaterade samt vilket urval du vill göra så kan du få ett exempel.

/Johan


Svara

Sv:Flera recordsets

Postades av 2007-05-04 22:50:35 - Mattias Svensson

Tabellen kassabok har info om varje transaktion, men istället för att skriva ut kategorinamnet i varje rad i denna tabell har jag en separat tabell som heter kategorier som bara håller kategorinamet. Det gemensamma fältet är alltså id-numret på kategorin.

Koden ser ut som nedan.

<% @ CODEPAGE = 1252 %>
<!-- #include file="conn.asp" -->
<%
IF NOT len(session("user"))>0 THEN response.redirect "bad.htm" END IF

Set Rs = Server.CreateObject("ADODB.Recordset")
Set Rs2 = Server.CreateObject("ADODB.Recordset")

rs2.open "SELECT `kategori` FROM kategorier WHERE `id`=" & request.querystring("kategori"),Conn
kategori=rs2("kategori")
rs2.close

'ta fram transaktionerna för användaren för det aktuella året och ur den aktuella kategorin.

RS.open "SELECT * FROM kassabok WHERE `user`=" & session("user") & " AND `year`=" & session("year") AND `kategori`=" & request.querystring("kategori") & " ORDER BY `month`,`day` DESC,`lopnr` DESC",Conn

Do until Rs.EOF

'dra fram namnet på kategorin (slipper lagra hela kategorinamnet i varje rad i tabellen kassabok)

rs2.open "SELECT `kategori` FROM kategorier WHERE `id`=" & rs("kategori"),Conn
kategori=rs2("kategori")
rs2.close
%>
...skriver ut en tabell
<%
rs.movenext
loop
rs.close

set rs = nothing
set rs2 = nothing
%>


Svara

Sv: Flera recordsets

Postades av 2007-05-04 23:47:50 - Johan Djupmarker

Du skulle kunna göra såhär för att få ut kategorinamnet samtidigt:

RS.open "SELECT kassabok.*, kategorier.kategori AS KategoriNamn FROM kassabok INNER JOIN kategorier ON kassabok.kategori = kategorier.id WHERE `user`=" & session("user") & " AND `year`=" & session("year") AND kassabok.kategori=" & request.querystring("kategori") & " ORDER BY `month`,`day` DESC,`lopnr` DESC",Conn

/Johan


Svara

Sv:Flera recordsets

Postades av 2007-05-07 00:04:04 - Mattias Svensson

tack så mycket!


Svara

Sv: Flera recordsets

Postades av 2007-05-10 01:33:24 - Lasse Österberg

Inget svar på din fråga men en allmän rekommendation.

Jag såg att du tar värden från querystring:en och använder dem direkt i din SQL fråga utan att validera dem. Detta är "farligt" eftersom du gör din site tillgänglig för "SQL injections".

Artikel [SQL-Injections - Att förhinda dom] förklarar enkelt vad detta innebär. Jag rekommenderar dig att läsa lite mer i ämnet eller google:a på det, för det finns fler tecken som kan användas som operatörer i ditt SQL statement. Det är oxå olika beroende på vilken typ av databas man använder.

Sen bör man alltid validera input från användare, dvs. förväntar man sig en integer så kontrollerar man att man fått det av användaren. Och har man inte fått det sätter man ett default värde eller meddelar användaren att värdet inte var gilltigt.

Efter lite snabbsökning på pellesoft:
[SQL-Injections - Att förhinda dom]
[Mer om säkerhet]
[Hacked by basher13]
http://www.sakerkod.se/


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 159
27 952
271 704
992
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