In CFML non si interrogano direttamente i database, ma i Data Source Name che abbiamo impostato in ColdFusion Administrator. Il tag che svolge questo compito è <cfquery>.
<cfquery> richiede due attributi, "datasource" e "name". Con il primo indichiamo quale Data Source Name deve essere interrogato, con il secondo il nome che deve avere il recordset restituito dalla query.
1. Ad esempio, apri index.cfm e modificalo in questo modo:
<!--- Esegue una query al datasource "discoteca" chiamata "getAlbum" --->
<cfquery datasource="discoteca" name="getAlbum">
SELECT ALBUM_TITOLO, ALBUM_AUTORE, ALBUM_GENERE
FROM ALBUM
</cfquery>
<!--- Include l'intestazione del sito --->
<cfinclude template="header.cfm">
<!--- Include il piede delle pagine --->
<cfinclude template="footer.cfm">
Con il tag <cfquery> abbiamo passato a ColdFusion la stringa SQL per eseguire un "SELECT" dalla tabella "ALBUM" del datasource "discoteca".
Così facendo, ancora non abbiamo visualizzato nulla del contenuto del recordset. Il tag <cfoutput>, che abbiamo visto prima per visualizzare il contenuto di una variabile, si utilizza anche per visualizzare il risultato di una query.
2. Inserisci, dopo il primo <cfinclude>, questo codice:
......
<p><cfoutput query="getAlbum">
#ALBUM_GENERE#:
<b>#ALBUM_TITOLO#</b> (#ALBUM_AUTORE#)<br>
</cfoutput></p>
......
e, dopo aver salvato, apriamo "http://localhost:8500/discoteca/index.cfm" (se viene mostrato un errore, assicurati di aver scritto correttamente il codice e di aver chiuso il database di Access, o di averlo aperto con accesso condiviso).
Con <cfoutput> e l'attributo "query" abbiamo detto a ColdFusion di mostrare il risultato della query "getAlbum". Con la solita notazione, inserendo tra cancelletti il nome dei campi del database, abbiamo "stampato" ogni record restituito dal SELECT contenuto in <cfquery>. Possiamo considerare <cfoutput> come un ciclo eseguito sul recordset.
3. Modifica il <cfoutput> giocando un po' con l'HTML per creare una tabella, inserendo in ciascuna riga il valore del record:
......
<p>
<table>
<!--- L'intestazione della tabella --->
<tr>
<td><p><b>Genere</b></p></td>
<td><p><b>Titolo</b></p></td>
<td><p><b>Autore</b></p></td>
</tr>
<cfoutput query="getAlbum">
<!--- Una riga della tabella per ogni record della query GetAlbum --->
<tr>
<td><p>#ALBUM_GENERE#</p></td>
<td><p>#ALBUM_TITOLO#</p></td>
<td><p>#ALBUM_AUTORE#</p></td>
</tr>
</cfoutput>
</table>
</p>
......
4. Aggiungi una descrizione prima della tabella:
......
<p>
Ad oggi ci sono <cfoutput>#getAlbum.RecordCount#</cfoutput> CD nel mio database.
</p>
<p>
<table>
<!--- L'intestazione della tabella --->
<tr>
<td><p><b>Genere</b></p></td>
<td><p><b>Titolo</b></p></td>
<td><p><b>Autore</b></p></td>
</tr>
<cfoutput query="getAlbum">
<!--- Una riga della tabella per ogni record della query GetAlbum --->
<tr>
<td><p>#ALBUM_GENERE#</p></td>
<td><p>#ALBUM_TITOLO#</p></td>
<td><p>#ALBUM_AUTORE#</p></td>
</tr>
</cfoutput>
</table>
</p>
......
Con la variabile "getAlbum.RecordCount" possiamo risalire al numero dei record che sono stati estratti dalla query getAlbum. Essendo una variabile CFML, abbiamo bisogno di <cfoutput> e dei cancelletti # per mostrarne il contenuto. "RecordCount" è una variabile riservata e come scope ha sempre quello della query di cui vogliamo conoscere il numero di record.
Prova a navigare nella home page ("http://localhost:8500/discoteca/index.cfm") per fare un test.