Källkoden för /anders.enges/asp/db1.asp

<!--#include file="../inc/navstuff.asp" -->
<!--  #include file="../inc/connection.asp" -->
För databaer använder vi ADO (Active data Objects). ADO kan hanteras på
många olika sätt. I dessa sidor presenteras en liten del av ADO. Så mycket att
vi klarar oss. Det antas att ni kan grunderna i SQL för att hantera data<p>
Oftast gör man på detta sätt:<p>
Först skapar vi en fil med namnet <b>connection.asp</b> som skall innehålla följande (OBS! En enda rad)<br>
<div class=code>
<span class=asp><%<BR>
Const strConn = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=<b>C:\databaser\aspkurs.mdb</b>; <FONT COLOR=#006400><i>DriverId=25; FIL=MS Access; MaxBufferSize=<b>8192</b>; MaxScanRows=8; PageTimeout=5; SafeTransactions=0; Threads=<b>100</b>;"</i></font><br>
%></span>
</div>
<p>
Allt med <i><FONT COLOR=#006400>kursiv och grön stil</font></i> kan bortlämnas om man snabbt vill testa och är nöjd med default värdena (som inte alltid är så lyckade)<p>

Denna fil kan modifieras vid behov<ol>
<li>Ändra databasnamnet och katalogen enligt behov<br>
<li>Har du mindre än 64 MB ram så minska MaxBufferSize från 8192 till 4096<br>
<li>Räknar du med låg belastning kan Threads minskas
</ol>
(Inställningarna tagna från tester med det ökända <i>VapVal</i> systemet = tål hög momentan belasting. Egentligen vet jag väl inte vad allt betyder, men skit samma, det fungerar!)
<p>
Man kan då skriva följande kod:
<div class=code>
<FONT COLOR=#006400><!-- #include file="connection.asp" --></font><br>
<span class=asp><%<BR>
Set Conn = Server.CreateObject("ADODB.Connection")<BR>
Conn.Open strConn<BR>
Set RS = Conn.Execute("SELECT * FROM EXEMPELDATA")<BR>
<BR>
Do While Not RS.EOF %></Span><BR>
<BR>
      <Span class=asp><%  =RS("aTEXT") %></span>  <br><BR>
<BR>
      <Span class=asp><%  RS.MoveNext<BR>
Loop<BR>
<BR>
RS.Close<BR>
Conn.Close<BR>
%></span></div>
<p>
Förklaring till ovanstående program:<hr>
<dl>
<dt><Span class=asp>Set Conn = Server.CreateObject("ADODB.Connection")</span>
<dd>Skapar ett objekt för databasens hantering. Detta betyder att vi efter detta kan använda
oss av Conn.<i>metod eller egenskap</i> för hanteringen av databasen<p>
<dt><Span class=asp>Conn.Open strConn</span>
<dd>Vi säger att Conn objektet skall använda sig av databasen enligt de inställningar som finns i variabeln strConn <p>
<dt><Span class=asp>Set RS = Conn.Execute("SELECT * FROM EXEMPELDATA")</span>
<dd>Vi säger vilken tabell vi vill ha med hjälp av en vanlig SQL SELECT sats.<p>
<dt><Span class=asp>Do While Not RS.EOF </span>
<dd>Upprepa så länge vi har en post (EOF = End Of File)<p>
<dt><Span class=asp><%  =RS("NAMN") %></span>  <br>
<dd>Vi sätter in det värde som fältet NAMN har i nuvarande post. Efter detta byter vi rad.<p>
<dt><Span class=asp>RS.MoveNext</span>
<dd>Vi flyttar till nästa post (rad)<p>
<dt><Span class=asp>Loop</span>
<dd>Vi upprepar ovastående så länge som vi inte har kommit till slutet av tabellen<p>
<dt><Span class=asp>RS.Close</span>
<dd>När vi är färdiga så stänger vi vårt recordset<p>
<dt><Span class=asp>Conn.Close</span>
<dd>Och avbryter kontakten till databasen
</dl>
<p>
<dl>De centrala begreppen är således:<hr>
<dt>Connection
<dd>Upprätthåller kontakten till en databas. Kan jämföras med en Data kontroll i VB<p>
<dt>Recordset
<dd>Upprätthåller kontakten till en tabell. Kan jämföras med en Data kontrollens Recordset property i VB.<p>
</dl>
Resultatet av ovanstående program blir:<br>
<div class=res>
<%  startTime = now %> 
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConn

Set RS = Conn.Execute("SELECT * FROM EXEMPELDATA")
%>

<%  Do While Not RS.EOF %>
      <%  =RS("aTEXT") %>  <br>
      <%      RS.MoveNext
Loop

RS.Close
Conn.Close
%>

<p>
<%  ="Tid i sekunder att utföra koden: " & DateDiff("s", startTime, now) %> 
</div>
<!--#include file="../inc/footer.asp" -->