Avatar billede harkamp Nybegynder
16. februar 2004 - 16:51 Der er 8 kommentarer og
2 løsninger

Test af asp - programmering

Hej

Jeg har følgende asp-kode liggende på min hjemmeside. Jeg kan ikke rigtig finde ud af om der er noget galt med kodningen. Men faktum er at den asp-server som siden ligger på bliver ved med at gå ned (1-3 gange om måneden).

Er der nogen med forstand på asp som kan fortælle mig om min programmering er årsagen - eller om min programmering er ok?

databaseforbindelsen er markeret med xxxxxx med vilje!

På forhånd tak,

Henrik Harkamp

Her følger koden:

-----------------


<html>
<head>
<title>Københavns Ungdomsskole - Ungdomsskolecenter Amagers hold</title>
<link rel="stylesheet" type="text/css" href="../text.css">
<meta name="Microsoft Border" content="tlb">
</head>
<body leftmargin="0" topmargin="0">


<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")

' Database-stien, servernavn, databasenavn og password
sti = "Driver={MySQL}; SERVER=xxxxxxxxxxx; DATABASE=xxxxxxxxxx; UID=xxxxxxxx; PWD=xxxxxxxx"

Conn.Open sti
%>

<div align="center">
  <center>
  <table border="0" width="98%" cellspacing="0" cellpadding="0">
    <tr>
      <td width="100%" valign="bottom">
      <img border="0" src="images/hold_logo/2003/amager_2003.gif"></td>
    </tr>
  </table>
  </center>
</div>
<div align="center">
  <center>
<table border="0" width="98%" cellspacing="1">
    <tr>
    <td width=30%><a href="action.asp">
        <img border="0" src="images/hold_logo/2001/action_logo_medium.gif" alt="Se alle hold i denne kategori"></a></td>
    <td width=15%></td>
    <td width=15%></td>
    <td width=30%></td>
    <td width=10%></td>
    </tr>
    <tr>
    <td width=30% bgcolor="#CC9900"><font color="#FFFFFF"><b>Navn</b></font></td>
    <td width=15% bgcolor="#CC9900"><font color="#FFFFFF"><b>Dag</b></font></td>
    <td width=15% bgcolor="#CC9900"><font color="#FFFFFF"><b>Tid</b></font></td>
    <td width=30% bgcolor="#CC9900"><font color="#FFFFFF"><b>Sted</b></font></td>
    <td width=10% bgcolor="#CC9900"><font color="#FFFFFF"><b>Holdnr.</b></font></td>
    </tr>
</table>
  </center>
</div>

<%
' SQL forespørgsel
strSQL = "SELECT * FROM holdoversigt WHERE center='amager' AND kategori='action' AND vises='ja' ORDER BY 'navn'"

' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

' Tjekker om der overhoved er noget i databasen som svarer til SQL forespørgslen
if rs.eof then

' Hvis der ikke er noget skriver den følgende
%>

<div align="center">
<center>
<table border="0" width="98%" cellspacing="1">
    <tr>
    <td width=30% bgcolor="#C0C0C0"><%Response.write "Ingen hold i denne kategori"%></td>
    <td width=15% bgcolor="#C0C0C0"></td>
    <td width=15% bgcolor="#C0C0C0"></td>
    <td width=30% bgcolor="#C0C0C0"></td>
    <td width=10% bgcolor="#C0C0C0"></td>
    </tr>
    </table>
  </center>
</div>

<%   
end if

' Gennemløb Recordset (rs) med en løkke
Do While Not rs.eof

' Personens navn
strNavn = rs("navn")
       
' lav et link til person.asp med Id-værdien i URL
strLink = "<a href='holdbeskrivelse.asp?id=" & rs("id") & "'>" & strNavn & "</a>"

' Udskriv værdien af kolonnen navn, dag, tid, sted og holdnummer(nummer)
Response.Write
%>

<div align="center">
  <center>
<table border="0" width="98%" cellspacing="1">
    <tr>
    <td width=30% bgcolor="#C0C0C0"><% Response.Write strLink%></td>
    <td width=15% bgcolor="#C0C0C0"><%=rs("dag")%></td>
    <td width=15% bgcolor="#C0C0C0"><%=rs("tid")%></td>
    <td width=30% bgcolor="#C0C0C0"><%=rs("sted")%></td>
    <td width=10% bgcolor="#C0C0C0"><%=rs("nummer")%></td>
    </tr>
</table>
  </center>
</div>

<%
' Gå til næste Record i rs
rs.MoveNext
Loop
%>

<%
' Luk databaseforbindelse og sæt forbindelsen til ingenting
Conn.Close
Set Conn = Nothing
%>

</body>
</html>
Avatar billede eagleeye Praktikant
16. februar 2004 - 17:00 #1
Lige som du lukker din connection bør du lukket det recordset som bruges:

<%
'Luk recordset
rs.Close
Set rs = Nothing
' Luk databaseforbindelse og sæt forbindelsen til ingenting
Conn.Close
Set Conn = Nothing
%>


Der er en Response.Write uden noget efter det giver da normalt en fejl
' Udskriv værdien af kolonnen navn, dag, tid, sted og holdnummer(nummer)
Response.Write
Avatar billede harkamp Nybegynder
17. februar 2004 - 17:59 #2
Hej Eagleeye

1. Jeg er ikke så skarp ... er det korrekt forstået at jeg skal lukke recordset'ene i samme kodestump som jeg lukker databaseforbindelsen? Og hvis det er korrekt: i ovenstående eksempel kalder jeg to gange på den samme database for at hente recordset til to tabeller. Er det så nok bare at lukke recordset en gang! Håber ikke det er et dumt spørgsmål, for jeg kan jo godt se at jeg kun åbner og lukker for forbindelsen en gang.

2. Gør det, at jeg ikke har lukket recordset(ene), at serveren er blevet overbelastet eller har det intet at sige?

/harkamp
Avatar billede harkamp Nybegynder
17. februar 2004 - 18:06 #3
Hej Eagleeye

Til 1: Det jeg skriver er ikke helt rigtigt. HVIS jeg nu kaldte på den samme database to gange for at hente recordset til to tabeller. Er det så nok bare at lukke recordset(ene) en gang?

/harkamp
Avatar billede eagleeye Praktikant
18. februar 2004 - 19:35 #4
1. Du kan godt bruge et recordset flere gange så skal det bare lukke tilsidst.

2. Det er variable som ligger i memory, så umiddelbart vil det belaste serveren. Generalt siger man at man skal huske at sætte Objekter til Nothing når man er færdig med dem. Objekter er de variable som definere med Set foran.
Avatar billede harkamp Nybegynder
18. februar 2004 - 21:41 #5
Tusind tak for dit svar

/harkamp
Avatar billede harkamp Nybegynder
18. februar 2004 - 21:42 #6
.
Avatar billede eagleeye Praktikant
18. februar 2004 - 22:17 #7
ok, normalt giver man point til dem som har svaret, og ikke tager dem selv :)
Avatar billede harkamp Nybegynder
18. marts 2004 - 05:09 #8
Har lige set din kommentar - hvordan har jeg gjort det? Jeg var sikker på at jeg trykkede accepteret svar. Men jeg kan godt se fra min pointstilling at jeg har fået dem selv! Hvordan gør jeg det godt igen?

Det må du sgu undskylde - jeg er ellers skide glad for din hjælp
Avatar billede harkamp Nybegynder
18. marts 2004 - 05:19 #9
Nu har jeg ledt efter et sted, som kan forklare mig, hvad jeg skal gøre, når jeg skal give point - så jeg ikke kvajer mig igen. Men jeg kan ikke finde noget. Ved nogen hvor jeg skal lede?
Hvordan giver jeg Eagleeye de point, som han fortjener?
Avatar billede harkamp Nybegynder
16. maj 2006 - 13:37 #10
Har lige gennemgået dette spørgsmål og er super pinlig over ikke at have
bragt pointene i orden.
Har derfor oprettet et spørgsmål til pointene http://www.eksperten.dk/spm/709654
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester