Ricerca…


Lavorare con i database

Uno dei punti di forza di ColdFusion è la facilità con cui si lavora con i database. E, naturalmente, gli input di query possono e devono essere parametrizzati.

Implementazione di tag

<cfquery name="myQuery" datasource="myDatasource" result="myResult">
    select firstName, lastName
    from users
    where lastName = <cfqueryparam value="Allaire" cfsqltype="cf_sql_varchar">
</cfquery>

Implementazione di CFScript

// ColdFusion 9+
var queryService = new query(name="myQuery", datasource="myDatasource");
queryService.addParam(name="lName", value="Allaire", cfsqltype="cf_sql_varchar");
var result = queryService.execute(sql="select firstName, lastName from users where lastName = :lName");
var myQuery = result.getResult();
var myResult = result.getPrefix();

// ColdFusion 11+
var queryParams = {lName = {value="Allaire", cfsqltype="cf_sql_varchar"}};
var queryOptions = {datasource="myDatasource", result="myResult"};
var myQuery = queryExecute("select firstName, lastName from users", queryParams, queryOptions);

Inserire valori è altrettanto facile:

queryExecute("
    insert into user( firstname, lastname )
    values( :firstname, :lastname )
",{
    firstname: { cfsqltype: "cf_sql_varchar", value: "Dwayne" }
    ,lastname: { cfsqltype: "cf_sql_varchar", value: "Camacho" }
},{
    result: "local.insertResult"
});

return local.insertResult.generated_key;

Esempio di base

Le connessioni al database sono configurate utilizzando lo strumento Amministratore CF. Vedi Connessioni al database per come connettere un'origine dati.

Per eseguire le query tutto ciò di cui hai bisogno è il tag <cfquery> . Il tag <cfquery> connette e apre il database per te, tutto ciò che devi fare è fornirgli il nome dell'origine dati.

<cfquery name="Movies" datasource="Entertainment">
    SELECT title
    FROM   Movies
</cfquery>

Per visualizzare i risultati della query:

<cfoutput query="Movies">
    #title#<BR>
</cfoutput>

Autenticazione

Molte configurazioni di database richiedono l'autenticazione (sotto forma di nome utente e password) prima di poter interrogare il database. È possibile fornire questi utilizzando gli attributi username e password.

Nota: il nome utente e la password possono anche essere configurati rispetto all'origine dati in ColdFusion Administrator. La fornitura di questi dettagli nella query sostituisce il nome utente e la password nell'Amministratore ColdFusion.

<cfquery datasource="Entertainment" username="webuser" password="letmein">
    select *
    from Movies
</cfquery>

Query memorizzate nella cache

Una query memorizzata nella cache è una query che ha i suoi risultati archiviati nella memoria del server. I risultati vengono memorizzati al primo avvio della query. Da quel momento in poi, ogniqualvolta tale richiesta viene nuovamente richiesta, ColdFusion recupererà i risultati dalla memoria.

È possibile memorizzare una query nella cache utilizzando l'attributo cachedAfter . Se la query è stata eseguita l'ultima volta dopo la data fornita, vengono utilizzati i dati memorizzati nella cache. Altrimenti la query viene rieseguita.

<cfquery datasource="Entertainment" cachedAfter="July 20, 2016">
    select *
    from Movies
</cfquery>

Affinché la cache venga utilizzata e vengano evitate più chiamate al database, la query corrente deve utilizzare la stessa istruzione SQL, l'origine dati, il nome della query, il nome utente e la password utilizzati dalla query memorizzata nella cache. Ciò include gli spazi nella query.

Di conseguenza, le seguenti query creano cache diverse, anche se i caratteri tagliati sono uguali ei risultati della query sono identici:

<cfquery datasource="Entertainment" cachedAfter="July 20, 2016">
    select *
    from Movies
    <cfif false>
    where 1 = 1
    </cfif>
    <cfif true>
    where 1 = 1
    </cfif>
</cfquery>

<cfquery datasource="Entertainment" cachedAfter="July 20, 2016">
    select * 
    from Movies
    <cfif true>
    where 1 = 1
    </cfif>
    <cfif false>
    where 1 = 1
    </cfif>
</cfquery>

Limitazione del numero di record restituiti

È possibile limitare il numero di righe da restituire utilizzando l'attributo maxrows .

<cfquery datasource="Entertainment" maxrows="50">
    select *
    from Movies
</cfquery>

timeout

È possibile impostare un limite di timeout usando l'attributo timeout . Questo può essere utile per evitare che le richieste vengano eseguite molto più a lungo di quanto dovrebbero e di conseguenza influire sull'intera applicazione.

L'attributo di timeout imposta il numero massimo di secondi che ogni azione di una query può eseguire prima di restituire un errore.

<cfquery datasource="Entertainment" timeout="30">
    select *
    from Movies
</cfquery>


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow