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


ADODB: Command.Prepered

Postades av 2003-03-23 15:47:15 - Andreas Hillqvist, i forum databaser, Tråden har 2 Kommentarer och lästs av 1358 personer

Hej alla goa pellesoftare. Jag har stött på något som jag tycker kan var intresant för alla. Okej, har inte gå över till .NET än, men ändå.

Jag försöker ju återanvändar instanser av objekt om det är möjligt för att unvika onödig belastning.

Ta till exempel ett forum. Att lista ut det senaste inläggen under kattegorier.
Det är ju då enklast att ha två loppar. En loop för Kategorier. Sedan placera loopen för inlägg inanför kategori-loopen.

Då behös ju bara två instanser av recordset. Alltså bara en Set skall anropas för att tilldela en instans till recordsetet.

Okej, nu till det jag upptäckte.
Låt oss ta lite kod:
<code>
<!--METADATA TYPE="typelib" NAME="ADODB Type Library" UUID="00000205-0000-0010-8000-00AA006D2EA4" -->
<%
Dim con

Dim rsCategories

Dim rsTopics
Dim cmdTopics


'*** Öppnar anslutning till databas
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & Server.MapPath("ForumDB.mdb")


'*** Hämtar kategori/kategorier:
Set rsCategories = Server.CreateObject("ADODB.Recordset")
rsCategories.Open "qryCategories", con, adOpenForwardOnly, adLockReadOnly, adCmdTable

'*** Förbereder objekt för listning av ämnen:
Set cmdTopics = Server.CreateObject("ADODB.Command")
Set cmdTopics.ActiveConnection = Connection
cmdTopics.Prepared = True
cmdTopics.CommandType = adCmdStoredProc
cmdTopics.CommandText = "qryLastCategoryTopics"
cmdTopics.Parameters.Append cmdTopics.CreateParameter("CategoryId", adInteger, adParamInput,,Null)
cmdTopics.Parameters.Append cmdTopics.CreateParameter("LastDate", adDate, adParamInput,,Date-3)
Set rsTopics = Server.CreateObject("ADODB.Recordset")

'*** Listar alla forum
Do Until rsCategories.EOF
%>
<DIV Class="Caption"><%=Server.HTMLEncode(rsCategories("CategoryTitle"))%></DIV>
<TABLE>
<THEAD>
<TR><TD>Titel</TD><TD>Tidpunkt</TD><TD></TD></TR>
</THEAD>
<TBODY>
<%
cmdTopics.Parameters("CategoryId") = rsCategories("CategoryId")
rsTopics.Open cmdTopics

Do Until rsTopics.EOF
%>
<TR><TD>" Target="TopicId<%=rsTopics("TopicId")%>"><%=Server.HTMLEncode(rsTopics("TopicTitle"))%></TD><TD><%=rsTopics("TopicModified")%></TD><TD></TD></TR>
<%
rsTopics.MoveNext
Loop

rsTopics.Close
%>
</TBODY>
</TABLE>
<%
rsCategories.MoveNext
Loop

'*** Frigör variabler
Set rsTopics = Nothing
Set cmdTopics = Nothing

rsCategories.Close
Set rsCategories = Nothing

con.Close
Set con = Nothing
%>
</code>
När jag inte hade cmdTopics.Prepared = True fick jag problem med urvcalet. Den gav det första resultatet även ved det andra och tredja anropet. Oavsett om jag använde Open Eller Execute. Prepared = True löste det ju.


Svara

Sv: ADODB: Command.Prepered

Postades av 2003-03-24 09:45:28 - Patrik Löwendahl

Tips,

kolla på MS Data shaping .. då kan ud jiobba med hierarkisk data i ADO och får endast ett recordset och endast en Open .. jag kan nästan lova att din prestanda kommer öka dramatiskt.


Svara

Sv: ADODB: Command.Prepered

Postades av 2003-03-24 17:41:27 - Andreas Hillqvist

Hmmm... Det tänkte jag inte på. Har testat lite. Går faktist snabbare. Mycket snabbare om det gäller många poster. Dessutom blir det mindre kod.

Litet exempel:
<code>
Dim rsSub As ADODB.Recordset
Dim rsMain As ADODB.Recordset
Dim Connection As ADODB.Connection
Dim StartTime As Long

Set Connection = New ADODB.Connection
Connection.Open "Provider=MSDataShape.1;" & _
"Data Provider=MICROSOFT.JET.OLEDB.4.0;" & _
"Data Source=" & FileName

Set rsMain = New ADODB.Recordset
rsMain.Open "SHAPE {SELECT * FROM Main} AS Main" & vbCrLf & _
"APPEND ({SELECT * FROM Sub} AS Sub RELATE MainId TO SubMain) AS Sub", Connection
Do Until rsMain.EOF
Set rsSub = rsMain("Sub").Value
Do Until rsSub.EOF
rsSub.MoveNext
Loop
rsSub.Close
rsMain.MoveNext
Loop
rsMain.Close
</code>


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

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 570 787
27 960
271 761
5 841
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