Jag har några funderingar angående Connection object. Jag har sett ett flertal olika alternativ på hur de används och är inte helt på det klara med skillnaderna. Hej! Alltså jag är nog helt lost... Skillnader: Jag är fortfarande inte med. I alternativ2 stänger du inte din connection. Det innebär att den är öppen enda tills instamnsen av ditt recordset dör. Faktum är att jag fattar fortfarande inte... Connection object
Låt säga att jag jobbar mot en Access databas.
I det första fallet finns en include fil som ser ut:
Set Connection = Server.CreateObject("ADODB.Connection")
strConn = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/mapp/db/databas.mdb")
Connection.Open
I det andra fallet finns det en include fil som ser ut:
strConn = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/mapp/db/databas.mdb")
Det första alternativet skapas sedan i asp filen som jobbar mot databasen ännu ett recordset, till exempel:
strSQL = "SELECT * FROM Tabell"
Set RS = Connection.Execute(strSQL)
RS.Close
set RS = nothing
Connection.Close
set Connection = nothing
Och i det andra fallet används enbart ett recordset, exempelvis:
set Connection = Server.CreateObject("ADODB.Recordset")
Connection .ActiveConnection = strConn
Connection .Source = "SELECT * FROM Tabell"
Connection .Open()
Connection.Close
set Connection = nothing
Vad är skillnaden på dessa två?
Vad är syftet med att skapa ett andra recordset i alternativ nummer ett?
Är det något av alternativen som är direkt felaktigt?Sv: Connection object
I första fallet finns ingen recordset. Du har bara a connection mot databasen och sedan kör du en sql-sats mot den.Sv: Connection object
Är inte Set RS = Connection.Execute(strSQL) ett recordset?
Vad är skillnaden då?
Varför ska jag välja det ena framför det andra?Sv: Connection object
I första varianten skapar ditt connection objekt internt ett recordset och tilldelar det till en variabel.
I alternativ två skapar recordsetet ett internt objekt. Vilket ör öppet under hela recordsetets livstid.
Alternativ ett är att föreslå. Eftersom du bestämer när din anslutning skall stängas.Sv: Connection object
Jag kan väl inte stänga Connection innan RS?
Eller hur menar du?Sv: Connection object
Sv: Connection object
Menar du att jag direkt efter Set RS = Connection.Execute(strSQL) i alternativ ett ska stänga Connection?
<b>Alternativ ett:</b>
Set Connection = Server.CreateObject("ADODB.Connection")
strConn = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/mapp/db/databas.mdb")
Connection.Open
strSQL = "SELECT * FROM Tabell"
Set RS = Connection.Execute(strSQL)
'//använd RS
RS.Close
set RS = nothing
Connection.Close
set Connection = nothing
<b>Alternativ två:</b>
strConn = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/mapp/db/databas.mdb")
set Connection = Server.CreateObject("ADODB.Recordset")
Connection .ActiveConnection = strConn
Connection .Source = "SELECT * FROM Tabell"
Connection .Open()
'//använd Connection
Connection.Close
set Connection = nothing