Alla metoder du beskriver öppnar databasen på samma sätt (samma provider), men med olika metoder och parametrar. Vanligast är att använda 2:an, men dom andra går lika bra.
Men är det inte en viss prestandaskillnad på "execute" och "open"?
I alla tre fallen används metoden open för att öppna databasen, alternativ två och tre använder sig sedan utav execute för att köra en fråga, det första alternativet kör ingen fråga alls.
Självklart kan du öppna ett recordset med dessa connectionobjekt som argument, men det görs inte här.
Skillnaden med att öppna med Execute och Open är att ett RecordSet som är öppnat med Execute, alltid är ReadOnly. Ett RecordSet som öppnas med Open däremot, kan specifieras på ett annat sätt, med konstanter och andra parametrar som t.ex. disconnected recordsets, editeringsbara recordsets, mm.
Min erfarenhet är att alltid använda Execute, vid hämtning av data och (med ett par undantag) likaså vid radering, editering och addering av data.
Däremot när man vill ha tillgång till metoder såsom recordcount eller liknande, då använder jag Open, likaså i vid t.ex. paging-script, då jag är tvungen att ha ett RecordSet där jag kan hoppa fram och tillbaka.
Däremot när man vill ha tillgång till metoder såsom recordcount eller liknande, då använder jag Open, likaså i vid t.ex. paging-script, då jag är tvungen att ha ett RecordSet där jag kan hoppa fram och tillbaka.
Hur skulle du då omformulera alt 2?
Min erfarenhet är att alltid använda Execute, vid hämtning av data och (med ett par undantag) likaså vid radering, editering och addering av data
Så vid uppdatering, insert och delete i databasen går bra att använda execute, men inte vid paging...
Däremot när man vill ha tillgång till metoder såsom recordcount eller liknande, då använder jag Open, likaså i vid t.ex. paging-script, då jag är tvungen att ha ett RecordSet där jag kan hoppa fram och tillbaka.
Hur skulle du då omformulera alt 2?
Det skulle jag inte, det ser bra ut som det är. Om du inte vill använda RecordCount. :)
Min erfarenhet är att alltid använda Execute, vid hämtning av data och (med ett par undantag) likaså vid radering, editering och addering av data
Så vid uppdatering, insert och delete i databasen går bra att använda execute, men inte vid paging...
Det blandas ihop att "öppna databas (conncetion)" och "öppna recordset". I frågan handlar det om att öppna databasen (connectionobjekt). Här kan du inte öppna på annat sätt än med open.
Om vi går ifrån ämnet till att öppna ett recordset på olika sätt så är det som OveRRidE säger. :)
[red]<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("databas.mdb")
Set RecSet = Connect.Execute("SELECT fld1, fld2 FROM tbl1 WHERE fld1 = 'foo' AND fld2 = 'bar' ORDER BY fld1")
If NOT RecSet.EOF Then
'// Gör någe..
End If
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
%>[/red]
Function SetCon(SQL, MkRecSet)
Dim oCon
Set oCon = Server.CreateObject("ADODB.Connection")
oCon.Open(Application("ADODB"))
If MkRecSet = True Then
Dim oRs
Set oRs = oCon.Execute(SQL)
If Not oRs.EOF Then SetCon = oRs.GetRows(): CloseObject(oRs) Else SetCon = "no records..."
Else
oCon.Execute(SQL),,128
End If
CloseObject(oCon)
End Function
Function CloseObject(obj)
obj.Close
Set obj = Nothing
End Function
global.asa
Sub Application_OnStart
Application.Lock
Application("ADODB") = "driver={MySql ODBC 3.51 Driver};server=localhost;database=****;uid=****;pwd=****;option=16387;"
Application.UnLock
End Sub
270 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2