coldfusion
데이터베이스 쿼리
수색…
데이터베이스 작업
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>