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 questotutorial!



Come primo esempio per vedere come lavora il linguaggio CFMLcreiamo un applicazione che interroga un DB Access evisualizza il contenuto in una table.

Creazione database
Partiamo col creare il nostro DB con una tabella che poiandremo ad interrogare. Immaginiamo che tale DB rappresentiuna biblioteca e la tabella i libri disponibili, il DB lochiameremo BIBLIOTECA e la tabella LIBRI. Nella tabellametteremo i seguenti campi: ID_LIBRO (autonumber),TITOLO(text), AUTORE(text), EDITORE(text)
Pervisualizzare dei dati nel corso del tutorial, inseriamoqualche record di esempio nella tabella. Salviamo il DB inuna 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 conil database e il sistema operativo.
Apriamo Coldfusion Administrator che normalmente risiede aquesto indirizzo:http://localhost:8500/CFIDE/administrator/index.cfm

Una volta effettuato il login clicchiamo su"Datasources" , qui verrà visualizzatol'elenco dei datasource già esistenti e in alto,il form per crearne uno nuovo, "Add New DataSource".
Digitiamo il nome del datasource che vogliamo creare, peresempio "mioDB" e selezioniamo nella comboBox iltipo di DB che stiamo utilizzando, nel nostro caso"Microsoft Access" e premiamo "Add".


Nella schermata successiva dobbiamo semplicemente andare adinserire il percorso della cartella dove è situato ilDB.
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 caricatoun applet che elenca i dischi del PC, cerchiamo la cartelladel DB e dopo averlo selezionato premiamo"Apply".





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





Premendo "submit" Coldfusion Administrator crea ildatasource e se non riscontra alcun problema ci daràesito positivo, aggiungendolo nell'elenco dei datasourcegià presenti.

Output del recordset
Ora siamo pronti per cominciare a scrivere il nostrocodice.
Apriamo dreamweaver o l'editor che normalmente usiamo ein una pagina nuova scriviamo per prima cosa il codice cheinterroga il DB.

<cfquery datasource="mioDB" name="qLibri">    select *    from LIBRI< /cfquery>


La sintassi è molto semplice, è sufficienteutilizzare il tag cfquery con i due attributi"datasource" e "name" , l'istruzioneSQL di interrogazione del DB e il gioco è fatto.
Non esiste una locazione ben precisa per la query nellapagina, dipende da come è strutturatal'applicazione, ma sicuramente va messa primadell'utilizzo del recordset, in quanto coldfusion leggela pagina partendo dalla prima riga in poi.

Ora non ci resta che scrivere il codice per visualizzare ilrisultato:

<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 chenell'output finale restituiranno l'elenco completodei libri che abbiamo inserito nella tabella"LIBRI".
I nomi delle variabili corrispondono ai nomi delle colonnerestituite dalla query.

Da notare che il tag <cfoutputquery="qLibri">... </cfoutput> l'hoinserito prima del tag <tr> in modo tale che ad ognirecord della tabella corrisponda un riga diversa della table.

L'attributo "query" , col valore del nome dellaquery stessa, non fa altro che richiamare il recorsetrisultante dell'istruzione SQL.

Salviamo il template nella cartella tutorial col nome"libri.cfm"

Ora per visualizzare la nostra tabella nel browser digitiamoil seguente indirizzo:

http://localhost/tutorial/libri.cfm oppurehttp://localhost:8500/tutorial/libri.cfm
in base alla vostra installazione, questo è ilrisultato che otteniamo:


Da come si può notare collegarsi ad un DB èdavvero molto semplice con CFML e sono sufficienti pocherighe di codice.

Variabili del recordset
Insieme al recordset restituito dalla query ci sono dellevariabili aggiuntive utili nell'analisi dei dati:
- recordCount
      rappresenta in numerototale di record restituiti, nel caso la query nonrestituisce nulla il suo valore è impostato a 0;
- currentRow
      rappresenta il recordcorrente della query ed è utile quando si vuolconoscere la posizione di un determinato record durante unloop.
- colunmList
      un elenco, delimitato davirgole, dei nomi delle colonne relative alla tabellainterrogata.
- executionTime
      il tempo impiegato adelaborare la query

Più inprofondità...
In una query a volte è necessario utilizzare deifiltri per ottenere dei dati ben precisi, per esempio perestrapolare 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 inserendonell'istruzione SQL variabili precedentemente impostate,o provenienti dalla pagina precedente per esempio da unform.
Se impostiamo una variabile che rappresenta l'ID di unrecord della tabella "LIBRI" e vogliamo estrapolareil 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 corrispondenteall' ID_LIBRO = 2 nel nostro caso il libro di AlessandroManzoni.





Fare attenzione che se la colonna che stiamo filtrandoè di tipo numerico la variabile va inserita comenell'esempio, ma se è di tipo non numerico bisognainserirlo tra apic:

WHERE AUTORE = '#nomeVariabile#'