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


cmd frågor

Postades av 2007-05-14 09:44:30 - Mattias Svensson, i forum asp - allmänt, Tråden har 8 Kommentarer och lästs av 948 personer

Hittade nedanstående exempelkod på cmd-objektet och har några frågor om den.

Jag är med fram till rad 15, där undrar jag, frågetecknen är alltså placeholders för argumenten man skickar in? Matchas argumenten helt enketl i den ordning som frågetecknin dyker upp i cmd.CommandText?

Sedan på rad 21 undrar jag först varför det är ett komma utan någonting framför i cmd.Execute(), dessutom undrar jag varför det står array() runt argumenten som skall skickas in i SQLsträngen?

På rad 22-27 verkar det finnas en loop som inte gör någonting?? underförstått att jag där sätter in mitt eget syfte med recordsetet?

Och en sista fråga - behöver man inte göra "set rs = nothing"? eller kanske inte "set conn = nothing" heller? Har jag vant mig vid onödig kod? =)


1 Dim cmd
2 Dim conn
3 Dim SQLStmt
4 Dim rs
5 Dim employeeID
6 Dim employeeState
7
8 Set Conn = Server.CreateObject("ADODB.Connection")
9 Conn.Open CONNECTIONSTRING
10
11 Set cmd = server.createobject("ADODB.command")
12
13 cmd.activeConnection = conn
14
15 SQLStmt = "SELECT ID, Name, State FROM Employee WHERE (ID=? AND State=?)"
16 cmd.CommandText = SQLStmt
17
18 lngID = 5
19 StrState = "CA"
20
21 Set rs = cmd.Execute (, array(lngID, strState))
22 If not rs.eof then
23 Do until rs.eof
24
25 rs.movenext
26 next
27 End if
28
29 rs.close
30 conn.close


Svara

Sv: cmd frågor

Postades av 2007-05-14 11:14:04 - Johan Djupmarker

<b>frågetecknen är alltså placeholders för argumenten man skickar in?</b>

Ja

<b>Matchas argumenten helt enketl i den ordning som frågetecknin dyker upp i cmd.CommandText?</b>

Ja

<b>Sedan på rad 21 undrar jag först varför det är ett komma utan någonting framför i cmd.Execute()</b>

Har inte kollat upp, men antagligen är första argumentet frivilligt och parametrarnas värde är det andra argumentet.

<b>dessutom undrar jag varför det står array() runt argumenten som skall skickas in i SQLsträngen?</b>

Parametrarna ska antagligen skickas in som en array (funktionen skapar en array med argumentet).

<b>På rad 22-27 verkar det finnas en loop som inte gör någonting?? underförstått att jag där sätter in mitt eget syfte med recordsetet?</b>

Ja

<b>Och en sista fråga - behöver man inte göra "set rs = nothing"? eller kanske inte "set conn = nothing" heller? Har jag vant mig vid onödig kod? =) </b>

Nej, du ska göra det även i fortsättning. Exemplet är inte fulländat ;)

/Johan


Svara

Sv:cmd frågor

Postades av 2007-05-14 11:32:20 - Mattias Svensson

tack!

det känns som att du svarar på alla mina frågor =)


Svara

Sv:cmd frågor

Postades av 2007-05-14 12:09:08 - Andreas Hillqvist

>>Och en sista fråga - behöver man inte göra "set rs = nothing"? eller kanske inte "set conn = nothing" heller?
>>Har jag vant mig vid onödig kod? =)
>
>Nej, du ska göra det även i fortsättning. Exemplet är inte fulländat ;)

Det är onödigt att sätta variablerna till nothing om det är den sista koden på sidan/subrutin. Om varabeln strax går "out of scope" spelar det ingen roll om man precis innan satt den till nothing.


Svara

Sv: cmd frågor

Postades av 2007-05-14 13:37:55 - Johan Djupmarker

Om det vore som så att ASP-motorn skötte sitt jobb. Jag har inte undersökt detta själv, men "förr" var det mycket tal om att objekten kunde ligga kvar i minnet ett bra tag om man inte satte varibeln = nothing. Hurvida detta stämmer eller inte låter jag vara osagt.

/Johan


Svara

Sv:cmd frågor

Postades av 2007-05-14 19:51:33 - Andreas Hillqvist

http://blogs.msdn.com/ericlippert/archive/2004/04/28/122259.aspx#122275


Svara

Sv: cmd frågor

Postades av 2007-05-15 00:16:13 - Lars-Erik Eriksson

Å andra sidan talas det längre ned i länken om folk som faktiskt löst diverse problem med att vara konsekventa med stänga och döda ado-objekt.


Svara

Sv:cmd frågor

Postades av 2007-05-15 01:12:22 - Andreas Hillqvist

Vilken betydels har:

    rs.Close
    Set rs = Nothing

    con.Close
    Set con = Nothing

Jämfört mot:
    rs.Close
    con.Close

    Set rs = Nothing
    Set con = Nothing

Bör ett recordset frigöras före connection, för att ett recordeset har en referens till connection, ADODB.Recordset.ActivConnection?

Borde man då inte skriva:
    rs.Close
    Set rs.ActiveConecction = Nothing
    Set rs = Nothing

    con.Close
    Set con = Nothing

För att vara riktigt säker?

Inte glömma att stänga recordset man öppnar med ADODB.Connection.Execute().
Dim rs
Dim con
    Set con = CreateObject("ADODB.Connection")
    con. Open "Connection string"
    
    'Set rs = CreateObject("ADODB.Recordset")

    'Tidigare referns frigörs när rs tilldelas resultatet från execute.
    'Execute skapar en egen instans av ett recordset och retunerar den.
    Set rs = con.Execute("SELECT * FROM TableName") 

    rs.Close
    Set rs = Nothing

    con.Close
    Set con = Nothing


Frågan är när man gör en loop genom ett recordset i en loop genom ett recordset:
Dim rs1
Dim rs2
Dim con
    Set con = CreateObject("ADODB.Connection")
    con. Open "Connection string"
    
    Set rs1 = CreateObject("ADODB.Recordset")
    Set rs2 = CreateObject("ADODB.Recordset")
    
    rs1.Open "SELECT * FROM TableName1", con
    Do until rs1.EOF
        rs2.Open "SELECT * FROM TableName2 WHERE X = " rs1("id"), con


        rs2.Close
        rs1.MoveNext
    Loop
    Set rs2 = Nothing

    rs1.Close
    Set rs1 = Nothing

    con.Close
    Set con = Nothing

Vad tjänar man på att återanvända recordsetet i loopen? Bör man göra det?

Sedan har vi de som överst på sin sida instansierar en anslutning och öppnar den för att sist på sidan stänga den. Ibland med hjälp av includ-filer.

Så sätt objekten till nothing. Gör det i rätt ordning.
Du kan låta bli, klara dig undan med några rader minder kod och en likaväl fungerade applikation eller inte.

Viktigaste är att vara medveten om problematiken och förstå varför den ibland behövs.


Svara

Sv: cmd frågor

Postades av 2007-05-23 11:35:01 - Mattias Svensson

Och så är vi tillbka på det här med cmd, nu har man äntligen fått tummen ur! =)

jag har alltid kört
Set Rs = Server.CreateObject("ADODB.Recordset")
och sedan kört
rs.open "bla bla"

men i exemplet ovan är det alltså
Set rs = cmd.Execute (, array(lngID, strState))

innebär det att min rad med set rs... adodb recordset utgår och objektet både skapas och fylls med rätt data i en och samma rad? Tar cdm alltså hand om den biten själv att göra rs till ett recordset?



sedan undrar jag en sak till, när jag kör insert eller update-frågor och inte select frågor, skall jag bara utelämna "set rs" biten då och bara köra
cmd.Execute (, array(lngID, strState))
förutsatt att jag laddat cmd.CommandText med rätt uppdaterings/insert fråga?


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
933
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