Zoeken…


Werken met databases

Een van de sterke punten van ColdFusion is hoe gemakkelijk het is om met databases te werken. En natuurlijk kunnen query-invoer geparametreerd worden.

Tag-implementatie

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

CFScript-implementatie

// 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);

Waarden invoegen is net zo eenvoudig:

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;

Basis voorbeeld

Databaseverbindingen worden ingesteld met behulp van de CF Administrator-tool. Zie Databaseverbindingen voor het verbinden van een gegevensbron.

Om zoekopdrachten uit te voeren heeft u alleen de tag <cfquery> . De tag <cfquery> maakt verbinding met en opent de database voor u. U hoeft alleen de naam van de gegevensbron op te geven.

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

De queryresultaten weergeven:

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

authenticatie

Veel databaseconfiguraties vereisen authenticatie (in de vorm van een gebruikersnaam en wachtwoord) voordat u de database kunt opvragen. U kunt deze leveren met behulp van de kenmerken voor gebruikersnaam en wachtwoord.

Opmerking: de gebruikersnaam en het wachtwoord kunnen ook worden geconfigureerd tegen de gegevensbron in de ColdFusion-beheerder. Als u deze gegevens in uw zoekopdracht opgeeft, worden de gebruikersnaam en het wachtwoord in de ColdFusion-beheerder overschreven.

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

In cache opgeslagen zoekopdrachten

Een in de cache opgeslagen zoekopdracht is een zoekopdracht waarvan de resultaten zijn opgeslagen in het geheugen van de server. De resultaten worden opgeslagen wanneer de query voor het eerst wordt uitgevoerd. Vanaf dat moment haalt ColdFusion de resultaten uit het geheugen op wanneer die vraag opnieuw wordt gevraagd.

U kunt een query cachedAfter cache met behulp van het kenmerk cachedAfter . Als de query voor het laatst werd uitgevoerd na de opgegeven datum, worden gegevens in de cache gebruikt. Anders wordt de query opnieuw uitgevoerd.

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

Om de cache te gebruiken en meerdere aanroepen naar de database te vermijden, moet de huidige query dezelfde SQL-instructie, gegevensbron, querynaam, gebruikersnaam en wachtwoord gebruiken als de gebruikte cache-query. Dit omvat witruimte in de query.

Als zodanig maken de volgende query's verschillende caches, hoewel de bijgesneden tekens hetzelfde zijn en de queryresultaten identiek zijn:

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

Het aantal geretourneerde records beperken

U kunt het aantal te retourneren rijen beperken met behulp van het kenmerk maxrows .

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

Time-outs

U kunt een time-outlimiet instellen met behulp van het timeout outkenmerk. Dit kan nuttig zijn om te voorkomen dat aanvragen veel langer worden uitgevoerd dan zou moeten en als gevolg hiervan voor de hele toepassing.

Met het timeout outkenmerk wordt het maximale aantal seconden ingesteld dat elke actie van een query mag uitvoeren voordat een fout wordt geretourneerd.

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow