/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Databasekald og SSI
Fra : Troels Jensen


Dato : 19-09-05 19:33

Jeg har lavet et standardscript med et databasekald, som jeg vil
inkludere på mine sider med SSI. Scriptet ser i al sin enkelhed sådan
ud:

---
function dbreq(sqlstr)
   Dim Conn
   Set Conn = Server.createObject( "ADODB.Connection" )
   Conn.Open = "Driver={mySQL ODBC 3.51
driver};Server=xxxx;Database=xxxx;uid=xxxx;Pwd=xxxx;"
   set dbreq = conn.execute(sqlstr)
   
end function
---

Det kan for eksempel inkluderes på denne måde:

---
<!--#include virtual="/scripts/db.asp"-->
<%
set rs = dbreq("Select id, overskrift, text from blog")
do while not rs.eof
   response.write rs("overskrift")
   rs.movenext
loop
%>
---

Ovenstående fungerer fint nok. Problemet opstår, når jeg vil lukke
databasen igen. Jeg kan ikke bruge conn.close i mit script, for så kan
jeg jo ikke arbejde videre med rs-objektet. Og hvis jeg i slutningen af
mine sider sætter en conn.close ind, så får jeg følgende fejl:

Variable is undefined: 'Conn'

Jeg vil jo gerne følge god skik og lukke objektet. Men hvordan kan jeg
gøre det?

--
/Troels Jensen

 
 
Peter Lykkegaard (20-09-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 20-09-05 06:27

"Troels Jensen" wrote

> Conn.Open = "Driver={mySQL ODBC 3.51
> driver};Server=xxxx;Database=xxxx;uid=xxxx;Pwd=xxxx;"
> set dbreq = conn.execute(sqlstr)

> Jeg vil jo gerne følge god skik og lukke objektet. Men hvordan kan jeg
> gøre det?
>
I samme function:

Set dbreq.ActiveConnection = Nothing
Conn.close
Set Conn = Nothing

- Peter



Troels Jensen (28-09-2005)
Kommentar
Fra : Troels Jensen


Dato : 28-09-05 22:07

Peter Lykkegaard wrote in dk.edb.internet.webdesign.serverside.asp:

> Set dbreq.ActiveConnection = Nothing
> Conn.close
> Set Conn = Nothing

Tak for svaret, men jeg kan ikke rigtig få det til at virke. Hvad
betyder første linie?

--
/Troels Jensen

Peter Lykkegaard (01-10-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 01-10-05 12:34

"Troels Jensen" wrote
>
>> Set dbreq.ActiveConnection = Nothing
>> Conn.close
>> Set Conn = Nothing
>
> Tak for svaret, men jeg kan ikke rigtig få det til at virke.

Uden mere kød på, så kan jeg ikke rigtig hjælpe

> Hvad betyder første linie?

Du laver dit recordset om til et disconnected recordset

- Peter



Claus Marcussen (29-09-2005)
Kommentar
Fra : Claus Marcussen


Dato : 29-09-05 20:06

Troels Jensen wrote in dk.edb.internet.webdesign.serverside.asp:
> Jeg har lavet et standardscript med et databasekald, som jeg vil
> inkludere på mine sider med SSI. Scriptet ser i al sin enkelhed sådan
> ud:
>
> ---
> function dbreq(sqlstr)
>    Dim Conn
...
>    set dbreq = conn.execute(sqlstr)
> end function
> ---
>
> Ovenstående fungerer fint nok. Problemet opstår, når jeg vil lukke
> databasen igen. Jeg kan ikke bruge conn.close i mit script, for så kan
> jeg jo ikke arbejde videre med rs-objektet. Og hvis jeg i slutningen af
> mine sider sætter en conn.close ind, så får jeg følgende fejl:
>
> Variable is undefined: 'Conn'
>
> Jeg vil jo gerne følge god skik og lukke objektet. Men hvordan kan jeg
> gøre det?

Det jeg mener sker er, at du som local laver din Conn - derfor er den
ikke kendt uden for functionen og kan dermed ikke lukkes der - prøv at
flytte din DIM Conn udenfor - så har du et object der kan tilgåes.

Dim Conn
function dbreq(sqlstr)
....
set dbreq = conn.execute(sqlstr)
end function

Pænest ville selvfølgelig være, at Conn var en del af kaldet - altså
function dbreq(KaldConn, sqlstr)

mvh Claus



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste