Stefano Bernardoni
a- a+

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#'

Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Pier Paolo
Condividi le tue opinioni su questo articolo!