2011-08-17 13 views
5

मैनुअल का कहना है कि ExecuteScalar विधि की तरह इस्तेमाल किया जाना चाहिए:कैसे सरणी बनाने के लिए DbParameter []

public T ExecuteScalar<T>( 
    string commandText, 
    CommandType commandType, 
    params DbParameter[] parameters 
) 

लेकिन मैं मापदंडों का है कि सरणी कैसे बना सकता हूँ? मुझे अपनी संग्रहीत प्रक्रिया 2 पैरामीटर प्रदान करने की आवश्यकता है।

+0

आपको लगता है कि मैनुअल के लिए एक लिंक प्रदान कर सकते हैं:

आप Sql सर्वर का उपयोग कर रहे हैं, तो यह SqlParameter है? [DbCommand.ExecuteScalar] (http://msdn.microsoft.com/en-us/library/system.data.common.dbcommand.executescalar.aspx) में कोई पैरामीटर नहीं है। – dtb

उत्तर

8
  • DbParameter एक अमूर्त वर्ग है।
  • चूंकि प्रकार टी को उपयोग से अनुमानित नहीं किया जा सकता है, इसलिए आपको इसे निर्दिष्ट करना होगा।
  • एल्थॉट आप सरणी बनाये बिना पैरामीटर की एक चर संख्या को पास कर सकते हैं, यदि आप गतिशील रूप से पैरामीटर की चर संख्या बना रहे हैं, तो सरणी आपका मित्र है।

    var parameters = new[]{ 
          new SqlParameter(){ ParameterName="foo", Value="hello" }, 
          new SqlParameter(){ ParameterName="bar", Value="World" } 
         }; 
    x.ExecuteScalar<int>(commandText, commandType, parameters); 
    
+0

दोनों उत्तर ठीक काम करते हैं, लेकिन मैं इसे थोड़ा और पसंद करता हूं। सबको धन्यवाद! – Tys

1

पैराम कीवर्ड का अर्थ है कि आप अलग-अलग पैरामीटर निर्दिष्ट कर सकते हैं (इसलिए 1 से [बहुत अधिक] अनंतता तक)।

आप सिर्फ इस तरह विधि कॉल कर सकते हैं: ExecuteScalar<SomeType>("Command!", CommandType.SomeCommandType, dbParameter1, dbParameter2);

4

parameters पैरामीटर params keyword है। इसका मतलब यह है कि आप स्पष्ट रूप सारिणी निर्मित करने की जरूरत नहीं है कि लेकिन विधि के लिए तर्क के परिवर्तनशील पारित कर सकते हैं:

x.ExecuteScalar(commandText, commandType, parameter1, parameter2); 

हालांकि, अगर आप चाहते हैं, आप सरणी explictly बना सकते हैं और यह विधि करने के लिए पारित कर सकते हैं इस प्रकार है:

DbParameter[] parameters = new DbParameter[] { parameter1, parameter2 }; 

x.ExecuteScalar(commandText, commandType, parameters); 
2

DbParameter एक अमूर्त वर्ग है - लेकिन आप व्युत्पन्न प्रकार का दृष्टांत कर सकते हैं।

DbParameter[] parameters = new DbParameter[2]; 
parameters[0] = new SqlParameter("param1", 123456); 
parameters[1] = new SqlParameter("param2", "abcdef"); 
+0

यह एक त्वरित "श्रेणी से बाहर सूचकांक" अपवाद है ... पैरामीटर [1] होना चाहिए – Nyerguds

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