2010-12-16 12 views
8

लोग,पैरामीटरेटेड एसक्यूएल कॉमांड - एसक्लडीबीटी टाइप निर्दिष्ट करने का लाभ?

जब तक मैं गलत नहीं हूं, एक पैरामीटरयुक्त SQL क्वेरी प्रत्येक पैरामीटर के लिए SqlDbType निर्दिष्ट करके उत्पन्न की जा सकती है या नहीं। ऐसा लगता है कि मैं केवल पैरामीटर नाम और पैरामीटर के मान प्रदान करके एक SQLParameter का निर्माण कर सकते हैं। SqlDbType निर्दिष्ट करने का क्या फायदा है?

उत्तर

6

लाभ यह है कि आपके पास SqlDbType पैरामीटर पर स्पष्ट नियंत्रण है।

अन्यथा, ADO.NET को आपके द्वारा प्रदान किए जाने वाले मूल्य के आधार पर अनुमान लगाना होगा। .AddWithValue विधि में। वे अनुमान ज्यादातर समय के लिए बहुत अच्छे हैं - लेकिन यदि आप उदा। DBNull.Value प्रदान करें, यह वास्तव में अच्छी तरह से विचार करने के लिए थोड़ा मुश्किल है ...

इसके अलावा, यदि आप एक स्ट्रिंग प्रदान करते हैं, तो यह अधिकतम निर्दिष्ट करने में सक्षम होने के लिए अक्सर फायदेमंद होता है। उस स्ट्रिंग पैरामीटर की लंबाई (xVARCHAR(x) आपकी संग्रहीत प्रो में परिभाषा)। यदि आप नहीं करते हैं, तो ADO.NET वर्तमान लंबाई का उपयोग करेगा, और यह कभी-कभी एक अच्छी या बुरी चीज हो सकती है।

तो कुल मिलाकर: यह आपको अधिक नियंत्रण देता है और यह आपके इरादे से अधिक स्पष्ट/स्पष्ट है।

+0

धन्यवाद! समझ में आता है! – SFun28

0

मुख्य लाभ प्रदर्शन है। यदि आप पैरामीटर प्रकार निर्दिष्ट नहीं करते हैं, तो SQL क्लाइंट इंजन पैरामीटर मान से इसका अनुमान लगाएगा। यदि आप डिज़ाइन समय पर पैरामीटर प्रकार जानते हैं, तो यह निर्दिष्ट करना चरण अनुमान की लागत से बचने का एक आसान तरीका है।

+0

निकोल - क्या पेर्फ हानि महत्वपूर्ण है? – SFun28

2

यदि आप SqlDbType निर्दिष्ट करते हैं तो आप सुनिश्चित करते हैं कि आप पैरामीटर के लिए जो मान प्रदान करते हैं वह प्रदान किया गया SqlDbType के विरुद्ध मान्य है, इसलिए यदि डेटा फिट नहीं है तो आपको पहले एक त्रुटि मिल जाएगी (अन्यथा आपको SQL सर्वर से अपवाद मिलेगा)।

1

मैं मानता हूं कि एक विशिष्ट SqlDbType का उपयोग करके आप अधिक नियंत्रण प्राप्त करते हैं। यूनिकोड टेक्स्ट से निपटने पर टेक्स्ट से निपटने पर एक और कारण आप अधिक नियंत्रण चाहते हैं। उदाहरण के लिए, SqlDbType.NVarChar बनाम SqlDbType.VarChar का उपयोग कर।

+0

महान बिंदु! मैं यूनिकोड टेक्स्ट का उपयोग नहीं करता, लेकिन अगर मैंने ऐसा किया तो यह चिंता होगी। – SFun28

संबंधित मुद्दे