수색…


데이터베이스 작업

ColdFusion의 강점 중 하나는 데이터베이스 작업이 얼마나 쉬운 지입니다. 물론 쿼리 입력을 매개 변수화 할 수 있고 매개 변수화해야합니다.

태그 구현

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

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

값을 삽입하는 것도 쉽습니다.

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;

기본 예제

데이터베이스 연결은 CF 관리자 도구를 사용하여 설정됩니다. 데이터 소스 연결 방법은 데이터베이스 연결을 참조하십시오.

쿼리를 실행하려면 <cfquery> 태그 만 있으면됩니다. <cfquery> 태그는 데이터베이스에 연결하여 데이터베이스를 엽니 다. 데이터 소스의 이름을 제공하기 만하면됩니다.

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

조회 결과를 표시하려면 다음을 수행하십시오.

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

입증

많은 데이터베이스 구성에서는 데이터베이스를 조회하기 전에 인증 (사용자 이름 W 암호의 형식)이 필요합니다. 사용자 이름과 암호 속성을 사용하여이를 제공 할 수 있습니다.

참고 : 사용자 이름과 비밀번호는 ColdFusion Administrator의 데이터 소스에 대해 구성 할 수도 있습니다. 이러한 세부 정보를 쿼리에 제공하면 ColdFusion Administrator에서 사용자 이름과 비밀번호가 무시됩니다.

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

캐시 된 쿼리

캐시 된 쿼리는 서버의 메모리에 결과가 저장된 쿼리입니다. 결과는 쿼리가 처음 실행될 때 저장됩니다. 그 이후부터는 해당 쿼리가 다시 요청 될 때마다 ColdFusion은 메모리에서 결과를 검색합니다.

cachedAfter 속성을 사용하여 쿼리를 캐시 할 수 있습니다. 제공된 날짜 이후에 쿼리가 마지막으로 실행 된 경우 캐시 된 데이터가 사용됩니다. 그렇지 않으면 쿼리가 다시 실행됩니다.

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

캐시를 사용하고 데이터베이스에 대한 여러 호출을 피하려면 현재 쿼리는 사용 된 캐시 된 쿼리와 동일한 SQL 문, 데이터 소스, 쿼리 이름, 사용자 이름 및 암호를 사용해야합니다. 여기에는 쿼리의 공백이 포함됩니다.

이와 같이 트림 된 문자가 같고 쿼리 결과가 동일하더라도 다음 쿼리는 서로 다른 캐시를 만듭니다.

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

반환 된 레코드 수 제한

maxrows 속성을 사용하여 리턴되는 행 수를 제한 할 수 있습니다.

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

시간 초과

timeout 속성을 사용하여 timeout 시간을 설정할 수 있습니다. 이는 요청보다 오래 실행되는 요청을 방지하고 결과적으로 전체 응용 프로그램에 영향을 줄 때 유용 할 수 있습니다.

timeout 속성은 쿼리의 각 작업이 오류를 반환하기 전에 실행할 수있는 최대 timeout 초)을 설정합니다.

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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow