ADO 2.5 Samples

CacheSize Property Example (JScript)

This example uses the CacheSize property to show the difference in performance for an operation performed with and without a 30-record cache. Cut and paste the following code to Notepad or another text editor, and save it as CacheSizeJS.asp.

<!-- BeginCacheSizeJS -->
<%@ Language="JScript" %>
<%// use this meta tag instead of adojavas.inc%>
<!--METADATA TYPE="typelib" uuid="00000205-0000-0010-8000-00AA006D2EA4" -->

<HTML>
<HEAD>
<title>CacheSize Property Example (JScript)</title>
<style>
<!--
body {
   font-family: 'Verdana','Arial','Helvetica',sans-serif;
   BACKGROUND-COLOR:white;
   COLOR:black;
    }
.thead2 {
   background-color: #800000; 
   font-family: 'Verdana','Arial','Helvetica',sans-serif; 
   font-size: x-small;
   color: white;
   }
.tbody { 
   text-align: center;
   background-color: #f7efde;
   font-family: 'Verdana','Arial','Helvetica',sans-serif; 
   font-size: x-small;
    }
-->
</style>
</HEAD>
<BODY>
<h1>CacheSize Property Example (JScript)</h1>
<%
    // connection and recordset variables
    var Cnxn = Server.CreateObject("ADODB.Connection")
    var strCnxn = "Provider='sqloledb';Data Source=" + Request.ServerVariables("SERVER_NAME") + ";" +
            "Initial Catalog='Northwind';Integrated Security='SSPI';";
    var rsCustomer = Server.CreateObject("ADODB.Recordset");
    // caching variables
    var Now = new Date();
    var Start = Now.getTime();
    var End, Cache, NoCache
    
    try
    {
        // open connection
        Cnxn.Open(strCnxn)
    
        // open a recordset on the Employee table using client-side cursor
        rsCustomer.CursorLocation = adUseClient;
        rsCustomer.Open("Customers", strCnxn);
    
        // loop through the recordset 20 times
        for (var i=1; i<=20; i++)
        {
            rsCustomer.MoveFirst();
            while (!rsCustomer.EOF)
            {
                // do something with the record
                var strTemp = new String(rsCustomer("CompanyName"));
                rsCustomer.MoveNext();
            }
        }
    
        Now = new Date();
        End = Now.getTime();
        NoCache = End - Start;

        // cache records in groups of 30
        rsCustomer.MoveFirst();
        rsCustomer.CacheSize = 30;
    
        Now = new Date();
        Start = Now.getTime();
    
        // loop through the recordset 20 times
        for (var i=1; i<=20; i++)
        {
            rsCustomer.MoveFirst();
            while (!rsCustomer.EOF)
            {
                // do something with the record
                var strTemp = new String(rsCustomer("CompanyName"));
                rsCustomer.MoveNext();
            }
        }
    
        Now = new Date();
        End = Now.getTime();
        var Cache = End - Start;
    }
    catch (e)
    {
        Response.Write(e.message);
    }
    finally
    {
        // clean up
        if (rsCustomer.State == adStateOpen)
            rsCustomer.Close;
        if (Cnxn.State == adStateOpen)
            Cnxn.Close;
        rsCustomer = null;
        Cnxn = null;
    }
%>

    <table border="2">
        <tr class="thead2">
            <th>No Cache</th>
            <th>30 Record Cache</th>
        </tr>
        <tr class="tbody">
            <td><%=NoCache%></td>
            <td><%=Cache%></td>
        </tr>
    </table>

</BODY>
</HTML>
<!-- EndCacheSizeJS -->

See Also

CacheSize Property | Recordset Object

© 1998-2003 Microsoft Corporation. All rights reserved.