ADO accélère avec GetString()


Utilisez la méthode GetString() pour accélérer votre script ASP (au lieu d'utiliser plusieurs Response.Write).


Multiple Response.Write's

L'exemple suivant illustre une manière d'afficher une requête de base de données dans un tableau HTML :

<html>
<body>

<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"

set rs = Server.CreateObject("ADODB.recordset")
rs.Open "SELECT Companyname, Contactname FROM Customers", conn
%>

<table border="1" width="100%">
<%do until rs.EOF%>
  <tr>
    <td><%Response.Write(rs.fields("Companyname"))%></td>
    <td><%Response.Write(rs.fields("Contactname"))%></td>
  </tr>
<%rs.MoveNext
loop%>
</table>

<%
rs.close
conn.close
set rs = Nothing
set conn = Nothing
%>

</body>
</html>

Pour une requête volumineuse, cela peut ralentir le temps de traitement du script, car de nombreuses commandes Response.Write doivent être traitées par le serveur.

La solution consiste à créer la chaîne entière, de <table> à </table>, puis à la sortir - en utilisant Response.Write une seule fois.



La méthode GetString()

La méthode GetString() vous permet d'afficher la chaîne avec un seul Response.Write. Il élimine également le code do...loop et le test conditionnel qui vérifie si le jeu d'enregistrements est à EOF.

Syntaxe

str = rs.GetString(format,rows,coldel,rowdel,nullexpr)

Pour créer un tableau HTML avec les données d'un jeu d'enregistrements, nous n'avons besoin d'utiliser que trois des paramètres ci-dessus (tous les paramètres sont facultatifs) :

  • coldel - le code HTML à utiliser comme séparateur de colonnes
  • rowdel - le code HTML à utiliser comme séparateur de lignes
  • nullexpr - le code HTML à utiliser si une colonne est NULL

Remarque : La méthode GetString() est une fonctionnalité ADO 2.0. Vous pouvez télécharger ADO 2.0 sur https://www.microsoft.com/data/download.htm .

Dans l'exemple suivant, nous utiliserons la méthode GetString() pour conserver le jeu d'enregistrements sous forme de chaîne :

Exemple

<html>
<body>

<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"

set rs = Server.CreateObject("ADODB.recordset")
rs.Open "SELECT Companyname, Contactname FROM Customers", conn

str=rs.GetString(,,"</td><td>","</td></tr><tr><td>","&nbsp;")
%>

<table border="1" width="100%">
  <tr>
    <td><%Response.Write(str)%></td>
  </tr>
</table>

<%
rs.close
conn.close
set rs = Nothing
set conn = Nothing
%>
</body>
</html>

La variable str ci-dessus contient une chaîne de toutes les colonnes et lignes renvoyées par l'instruction SQL SELECT. Entre chaque colonne, le HTML </td><td> apparaîtra, et entre chaque ligne, le HTML </td></tr><tr><td> apparaîtra. Cela produira le code HTML exact dont nous avons besoin avec un seul Response.Write.