Connessione ad un database con Coldfusion
Come ci si collega ad un database con Coldfusion?
E' piuttosto semplice, seguendo le istruzioni di questo
tutorial!
Come primo esempio per vedere come lavora il linguaggio CFML
creiamo un applicazione che interroga un DB Access e
visualizza il contenuto in una table.
Creazione database
Partiamo col creare il nostro DB con una tabella che poi
andremo ad interrogare. Immaginiamo che tale DB rappresenti
una biblioteca e la tabella i libri disponibili, il DB lo
chiameremo BIBLIOTECA e la tabella LIBRI. Nella tabella
metteremo i seguenti campi: ID_LIBRO (autonumber),
TITOLO(text), AUTORE(text), EDITORE(text)
Per
visualizzare dei dati nel corso del tutorial, inseriamo
qualche record di esempio nella tabella. Salviamo il DB in
una cartella sotto la nostra web root, che potrà
essere per esempio: C:CFusionMXwwwroot utorialdb
Datasource
A questo punto bisogna creare il Datasource,
l'nterfaccia che permette a coldfusion di comunicare con
il database e il sistema operativo.
Apriamo Coldfusion Administrator che normalmente risiede a
questo indirizzo:
http://localhost:8500/CFIDE/administrator/index.cfm
Una volta effettuato il login clicchiamo su
"Datasources" , qui verrà visualizzato
l'elenco dei datasource già esistenti e in alto,
il form per crearne uno nuovo, "Add New Data
Source".
Digitiamo il nome del datasource che vogliamo creare, per
esempio "mioDB" e selezioniamo nella comboBox il
tipo di DB che stiamo utilizzando, nel nostro caso
"Microsoft Access" e premiamo "Add".
Nella schermata successiva dobbiamo semplicemente andare ad
inserire il percorso della cartella dove è situato il
DB.
Quindi selezioniamo "Browse Server" del campo
"Database File" oppure se conosciamo già
l'indirizzo completo lo possiamo scrivere a mano:
C:CFusionMXwwwroot utorialdbmioDB.mdb

Premendo il tasto "Browse Server" viene caricato
un applet che elenca i dischi del PC, cerchiamo la cartella
del DB e dopo averlo selezionato premiamo
"Apply".

A questo punto l'applet ci riporta nella schermata
precedente con l'indirizzo del DB nel campo
"Database File".

Premendo "submit" Coldfusion Administrator crea il
datasource e se non riscontra alcun problema ci darà
esito positivo, aggiungendolo nell'elenco dei datasource
già presenti.
Output del recordset
Ora siamo pronti per cominciare a scrivere il nostro
codice.
Apriamo dreamweaver o l'editor che normalmente usiamo e
in una pagina nuova scriviamo per prima cosa il codice che
interroga il DB.
<cfquery datasource="mioDB" name="qLibri">
select *
from LIBRI
< /cfquery>
La sintassi è molto semplice, è sufficiente
utilizzare il tag cfquery con i due attributi
"datasource" e "name" , l'istruzione
SQL di interrogazione del DB e il gioco è fatto.
Non esiste una locazione ben precisa per la query nella
pagina, dipende da come è strutturata
l'applicazione, ma sicuramente va messa prima
dell'utilizzo del recordset, in quanto coldfusion legge
la pagina partendo dalla prima riga in poi.
Ora non ci resta che scrivere il codice per visualizzare il risultato:
<html>
< head>
< title>Untitled Document</title>
< /head>
< body>
<table border="1">
<cfoutput query="qLibri">
<tr>
<td>#ID_LIBRO#</td>
<td>#TITOLO#</td>
<td>#AUTORE#</td>
<td>#EDITORE#</td>
</tr>
</cfoutput>
</table>
</body>
</html>
In rosso ho evidenziato il codice CFML e le variabili che
nell'output finale restituiranno l'elenco completo
dei libri che abbiamo inserito nella tabella
"LIBRI".
I nomi delle variabili corrispondono ai nomi delle colonne
restituite dalla query.
Da notare che il tag <cfoutput query="qLibri">... </cfoutput> l'ho inserito prima del tag <tr> in modo tale che ad ogni record della tabella corrisponda un riga diversa della table.
L'attributo "query" , col valore del nome della query stessa, non fa altro che richiamare il recorset risultante dell'istruzione SQL.
Salviamo il template nella cartella tutorial col nome "libri.cfm"
Ora per visualizzare la nostra tabella nel browser digitiamo
il seguente indirizzo:
http://localhost/tutorial/libri.cfm oppure
http://localhost:8500/tutorial/libri.cfm
in base alla vostra installazione, questo è il
risultato che otteniamo:
Da come si può notare collegarsi ad un DB è davvero molto semplice con CFML e sono sufficienti poche righe di codice.
Variabili del recordset
Insieme al recordset restituito dalla query ci sono delle
variabili aggiuntive utili nell'analisi dei dati:
- recordCount
rappresenta in numero
totale di record restituiti, nel caso la query non
restituisce nulla il suo valore è impostato a 0;
- currentRow
rappresenta il record
corrente della query ed è utile quando si vuol
conoscere la posizione di un determinato record durante un
loop.
- colunmList
un elenco, delimitato da
virgole, dei nomi delle colonne relative alla tabella
interrogata.
- executionTime
il tempo impiegato ad
elaborare la query
Più in
profondità...
In una query a volte è necessario utilizzare dei
filtri per ottenere dei dati ben precisi, per esempio per
estrapolare dal DB solo i libri di Dante Alighieri.
Modifichiamo cosi la query:
<cfquery datasource="mioDB" name="qLibri"> select * from LIBRI where AUTORE = 'Dante Alighieri' < /cfquery>
e visualizziamo il nuovo output:
E' possible creare anche query dinamiche inserendo
nell'istruzione SQL variabili precedentemente impostate,
o provenienti dalla pagina precedente per esempio da un
form.
Se impostiamo una variabile che rappresenta l'ID di un
record della tabella "LIBRI" e vogliamo estrapolare
il record relativo, imposteremo la query come segue:
<CFSET ID = "2"> <cfquery datasource="mioDB" name="qLibri"> select * from LIBRI where ID_LIBRO = #ID# < /cfquery>
Cosi otteniamo un recorset con un solo record corrispondente all' ID_LIBRO = 2 nel nostro caso il libro di Alessandro Manzoni.

Fare attenzione che se la colonna che stiamo filtrando
è di tipo numerico la variabile va inserita come
nell'esempio, ma se è di tipo non numerico bisogna
inserirlo tra apic:
WHERE AUTORE = '#nomeVariabile#'