ADO accelera con GetString()


Utilizzare il metodo GetString() per velocizzare lo script ASP (invece di utilizzare più Response.Write's).


Multiple Response.Write's

L'esempio seguente mostra un modo per visualizzare una query di database in una tabella 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>

Per una query di grandi dimensioni, ciò può rallentare il tempo di elaborazione dello script, poiché molti comandi Response.Write devono essere elaborati dal server.

La soluzione è creare l'intera stringa, da <table> a </table>, e quindi generarla, utilizzando Response.Write solo una volta.



Il metodo GetString()

Il metodo GetString() consente di visualizzare la stringa con un solo Response.Write. Elimina inoltre il codice do...loop e il test condizionale che verifica se il recordset è su EOF.

Sintassi

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

Per creare una tabella HTML con i dati di un recordset, abbiamo solo bisogno di utilizzare tre dei parametri sopra (tutti i parametri sono facoltativi):

  • coldel - l'HTML da usare come separatore di colonne
  • rowdel - l'HTML da usare come separatore di righe
  • nullexpr - l'HTML da utilizzare se una colonna è NULL

Nota: il metodo GetString() è una funzionalità di ADO 2.0. È possibile scaricare ADO 2.0 all'indirizzo https://www.microsoft.com/data/download.htm .

Nell'esempio seguente useremo il metodo GetString() per mantenere il recordset come una stringa:

Esempio

<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 variabile str sopra contiene una stringa di tutte le colonne e le righe restituite dall'istruzione SQL SELECT. Tra ogni colonna apparirà l'HTML </td><td> e tra ogni riga apparirà l'HTML </td></tr><tr><td>. Questo produrrà l'esatto HTML di cui abbiamo bisogno con un solo Response.Write.