Buscar..


Trabajando con bases de datos

Una de las fortalezas de ColdFusion es lo fácil que es trabajar con bases de datos. Y, por supuesto, las entradas de consulta pueden y deben ser parametrizadas.

Implementación de etiquetas

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

Implementación de 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);

Insertar valores es igual de fácil:

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;

Ejemplo básico

Las conexiones de la base de datos se configuran utilizando la herramienta Administrador de CF. Consulte Conexiones de base de datos para saber cómo conectar una fuente de datos.

Para ejecutar consultas, todo lo que necesita es la etiqueta <cfquery> . La etiqueta <cfquery> conecta y abre la base de datos, todo lo que necesita hacer es proporcionarle el nombre de la fuente de datos.

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

Para mostrar los resultados de la consulta:

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

Autenticación

Muchas configuraciones de base de datos requieren autenticación (en forma de nombre de usuario y contraseña) antes de poder consultar la base de datos. Puede proporcionarlos utilizando los atributos de nombre de usuario y contraseña.

Nota: el nombre de usuario y la contraseña también se pueden configurar contra la fuente de datos en el Administrador de ColdFusion. El suministro de estos detalles en su consulta anula el nombre de usuario y la contraseña en el Administrador de ColdFusion.

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

Consultas en caché

Una consulta en caché es una consulta que tiene sus resultados almacenados en la memoria del servidor. Los resultados se almacenan cuando la consulta se ejecuta por primera vez. A partir de entonces, cada vez que se solicite esa consulta, ColdFusion recuperará los resultados de la memoria.

Puede almacenar en caché una consulta usando el atributo cachedAfter . Si la consulta se ejecutó por última vez después de la fecha proporcionada, se utilizan datos almacenados en caché. De lo contrario, la consulta se vuelve a ejecutar.

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

Para que se utilice la memoria caché y se eviten varias llamadas a la base de datos, la consulta actual debe usar la misma declaración SQL, fuente de datos, nombre de la consulta, nombre de usuario y contraseña que la consulta almacenada en caché. Esto incluye espacios en blanco en la consulta.

Como tal, las siguientes consultas crean diferentes cachés, aunque los caracteres recortados son los mismos y los resultados de la consulta son idénticos:

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

Limitar el número de registros devueltos

Puede limitar el número de filas que se devolverán utilizando el atributo maxrows .

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

Tiempos de espera

Puede establecer un límite de tiempo de espera utilizando el atributo de timeout . Esto puede ser útil para evitar que las solicitudes se ejecuten por mucho más tiempo de lo que deberían e impactar en toda la aplicación como resultado.

El atributo de timeout establece el número máximo de segundos que cada acción de una consulta puede ejecutar antes de devolver un error.

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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow