coldfusion
डेटाबेस क्वेरीज़
खोज…
डेटाबेस के साथ काम करना
कोल्डफ़्यूज़न की एक ताकत डेटाबेस के साथ काम करना कितना आसान है। और निश्चित रूप से, क्वेरी इनपुट को पैरामीटर किया जा सकता है और होना चाहिए।
टैग कार्यान्वयन
<cfquery name="myQuery" datasource="myDatasource" result="myResult">
select firstName, lastName
from users
where lastName = <cfqueryparam value="Allaire" cfsqltype="cf_sql_varchar">
</cfquery>
सीएफस्क्रिप्ट कार्यान्वयन
// 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>
प्रमाणीकरण
डेटाबेस को क्वेरी करने से पहले कई डेटाबेस कॉन्फ़िगरेशन को प्रमाणीकरण (उपयोगकर्ता नाम और पासवर्ड के रूप में) की आवश्यकता होती है। आप उपयोगकर्ता नाम और पासवर्ड विशेषताओं का उपयोग करके इनकी आपूर्ति कर सकते हैं।
नोट: उपयोगकर्ता नाम और पासवर्ड को कोल्डफ़्यूज़न एडमिनिस्ट्रेटर में डेटा स्रोत के विरुद्ध भी कॉन्फ़िगर किया जा सकता है। अपनी क्वेरी में इन विवरणों की आपूर्ति करना कोल्डफ़्यूज़न एडमिनिस्ट्रेटर में उपयोगकर्ता नाम और पासवर्ड को ओवरराइड करता है।
<cfquery datasource="Entertainment" username="webuser" password="letmein">
select *
from Movies
</cfquery>
कैश्ड प्रश्न
कैश्ड क्वेरी एक क्वेरी है जिसके परिणाम सर्वर की मेमोरी में संग्रहीत होते हैं। जब क्वेरी पहली बार चलती है तो परिणाम संग्रहीत किए जाते हैं। तब से, जब भी उस क्वेरी को फिर से अनुरोध किया जाता है, तो कोल्डफ़्यूज़न मेमोरी से परिणाम प्राप्त करेगा।
आप कैश 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 विशेषता सेकंड की अधिकतम संख्या सेट करती है जो किसी क्वेरी की प्रत्येक क्रिया को त्रुटि देने से पहले निष्पादित करने की अनुमति देती है।
<cfquery datasource="Entertainment" timeout="30">
select *
from Movies
</cfquery>