डेल्फी में संरचित क्वेरी भाषा का उपयोग करना

एसक्यूएल (स्ट्रक्चर्ड क्वेरी लैंग्वेज) एक रिलेशनल डेटाबेस में डेटा को परिभाषित करने और हेरफेर करने के लिए एक मानकीकृत भाषा है। डेटा के संबंधपरक मॉडल के अनुसार, डेटाबेस को तालिकाओं के एक सेट के रूप में माना जाता है, रिश्ते हैं तालिकाओं में मानों का प्रतिनिधित्व किया जाता है, और एक परिणाम तालिका को निर्दिष्ट करके डेटा पुनर्प्राप्त किया जाता है जिसे एक या अधिक से प्राप्त किया जा सकता है बेस टेबल। क्वेरी एक कमांड लैंग्वेज का रूप लेती हैं जो आपको देती है चुनें, डालें, अपडेट करें, ढूंढें डेटा का स्थान, और इसके बाद।

डेल्फी में: TQuery

यदि आप अपने अनुप्रयोगों में SQL का उपयोग करने जा रहे हैं, तो आप इससे बहुत परिचित हो जाएंगे TQuery घटक। डेल्फी आपके अनुप्रयोगों को सीधे SQL सिंटैक्स का उपयोग करने में सक्षम बनाता है, हालांकि विरोधाभास और dBase तालिकाओं से डेटा तक पहुंचने के लिए TQuery घटक (स्थानीय SQL का उपयोग - ANSI मानक SQL का सबसेट), स्थानीय इंटरबेस सर्वर पर डेटाबेस और दूरस्थ डेटाबेस पर डेटाबेस सर्वर।
डेल्फी एक से अधिक सर्वर या टेबल प्रकार (उदाहरण के लिए, ओरेकल टेबल से डेटा और एक पैराडॉक्स टेबल) के खिलाफ विषम प्रश्नों का समर्थन करता है। TQuery में एक संपत्ति होती है।

instagram viewer
एसक्यूएल, जो SQL स्टेटमेंट को स्टोर करने के लिए उपयोग किया जाता है।

TQuery एक या अधिक SQL स्टेटमेंट्स को एनकैप्सुलेट करता है, उन्हें निष्पादित करता है और ऐसे तरीके प्रदान करता है जिनके द्वारा हम परिणामों में हेरफेर कर सकते हैं। क्वेरी को दो श्रेणियों में विभाजित किया जा सकता है: जो परिणाम सेट का उत्पादन करते हैं (जैसे कि ए चुनते हैं बयान), और जो नहीं (जैसे कि एक अपडेट करेंया सम्मिलित करें बयान)। TQuery का उपयोग करें। परिणाम सेट करने वाली क्वेरी को निष्पादित करने के लिए खोलें; TQuery का उपयोग करें। ExecSQL परिणाम निष्पादित करने वाले प्रश्नों को निष्पादित करने के लिए निष्पादित नहीं करता है।

SQL स्टेटमेंट या तो हो सकते हैं स्थिर या गतिशील, अर्थात्, वे डिजाइन समय पर सेट किए जा सकते हैं या पैरामीटर शामिल कर सकते हैं (TQuery। पैरामीटर) जो रन टाइम पर बदलता रहता है। पैरामीटर किए गए प्रश्नों का उपयोग करना बहुत लचीला है क्योंकि आप रन समय पर मक्खी पर डेटा के लिए उपयोगकर्ता के दृष्टिकोण और पहुंच को बदल सकते हैं।

निष्पादित किए जाने से पहले सभी निष्पादन योग्य SQL स्टेटमेंट तैयार किए जाने चाहिए। तैयारी का परिणाम कथन का निष्पादन योग्य या परिचालन रूप है। SQL स्टेटमेंट तैयार करने का तरीका और इसके ऑपरेशनल फॉर्म की दृढ़ता स्थिर SQL को डायनेमिक SQL से अलग करती है। जब आप सेट करते हैं तो डिज़ाइन समय में एक क्वेरी तैयार की जाती है और स्वचालित रूप से निष्पादित की जाती है सवाल घटक की सक्रिय संपत्ति True पर। रन टाइम में, एप्लिकेशन को घटक के ओपन या एक्ससीक्यूएल तरीकों को कॉल करने और निष्पादित करने के लिए कॉल के साथ एक क्वेरी तैयार की जाती है।

एक TQuery दो प्रकार के परिणाम सेट लौटा सकता है: "लाइव"TTable घटक के साथ (उपयोगकर्ता डेटा नियंत्रण के साथ डेटा को संपादित कर सकते हैं, और जब पोस्ट कॉल में परिवर्तन होता है तो डेटाबेस में भेजा जाता है,"सिफ़ पढ़िये"प्रदर्शन प्रयोजनों के लिए ही। लाइव रिजल्ट सेट का अनुरोध करने के लिए, क्वेरी कंपोनेंट की RequestLive प्रॉपर्टी को True पर सेट करें, और ध्यान रखें कि SQL स्टेटमेंट को कुछ विशिष्ट आवश्यकताओं (ORDER BY, SUM, AVG, आदि) से पूरा करना होगा।

एक क्वेरी टेबल फिल्टर की तरह कई तरह से व्यवहार करती है, और कुछ मायनों में, एक फिल्टर की तुलना में एक क्वेरी और भी अधिक शक्तिशाली है क्योंकि यह एक्सेस देता है:

  • एक समय में एक से अधिक टेबल (SQL में "शामिल हों")
  • इसकी अंतर्निहित तालिका से पंक्तियों और स्तंभों का एक निर्दिष्ट सबसेट, हमेशा उन सभी को वापस करने के बजाय

सरल उदाहरण

अब कार्रवाई में कुछ SQL देखते हैं। हालाँकि, हम डेटाबेस फॉर्म विज़ार्ड का उपयोग इस उदाहरण के लिए कुछ SQL उदाहरण बनाने के लिए कर सकते हैं, हम इसे मैन्युअल रूप से करेंगे, चरण दर चरण:

1. मुख्य रूप पर एक TQuery, TDataSource, TDBGrid, TEdit और एक TButton घटक रखें।
2. TD1Source घटक के डेटासेट गुण को क्वेरी 1 पर सेट करें।
3. TDBGrid घटक का DataSource गुण DataSource1 पर सेट करें।
4. TQuery घटक के डेटाबेसनाम को DBDEMOS में सेट करें।
5. SQL कथन को असाइन करने के लिए TQuery की SQL प्रॉपर्टी पर डबल-क्लिक करें।
6. डिज़ाइन समय में ग्रिड प्रदर्शन डेटा बनाने के लिए, TQuery घटक की सक्रिय संपत्ति को True में बदलें।
ग्रिड भले ही तीन कॉलम (FirstName, LastName, Salary) में Employee.db टेबल से डेटा प्रदर्शित करता है Employee.db में 7 फ़ील्ड हैं, और परिणाम सेट उन रिकॉर्ड्स तक सीमित है जहां FirstName शुरू होता है 'आर' के साथ।

7. अब Button1 के OnClick इवेंट में निम्न कोड असाइन करें।

प्रक्रिया TForm1.Button1 क्लिक करें (प्रेषक: TObject); शुरू
Query1.Close;{क्वेरी बंद करें}// नई एसक्यूएल अभिव्यक्ति असाइन करें
Query1.SQL.Clear; Query1.SQL.Add ('EmpNo, FirstName, LastName' का चयन करें); Query1.SQL.Add ('कर्मचारी से'); Query1.SQL.Add ('जहां वेतन>' + Edit1.Text); Query1.RequestLive: = true; Query1.Open; {खुली क्वेरी + प्रदर्शन डेटा}समाप्त;

8. अपना एप्लिकेशन चलाएं। जब आप बटन पर क्लिक करते हैं (जब तक कि संपादित 1 में एक वैध मुद्रा मूल्य है), ग्रिड प्रदर्शित करेगा सभी रिकॉर्ड्स के लिए EmpNo, FirstName और LastName फ़ील्ड, जहाँ वेतन निर्दिष्ट मुद्रा से अधिक है मूल्य।

इस उदाहरण में, हमने लाइव रिजल्ट सेट के साथ एक साधारण स्टेटिक एसक्यूएल स्टेटमेंट बनाया (हमने किसी भी प्रदर्शित रिकॉर्ड को नहीं बदला है) सिर्फ प्रदर्शन के उद्देश्य से।