आमतौर पर string
. पास करने में कोई समस्या नहीं होती है एक पैरामीटर के लिए जो संख्यात्मक है, जब तक कि SQL सर्वर स्ट्रिंग की सामग्री को एक संख्यात्मक मान में परिवर्तित करने में सक्षम है। अगर वह काम नहीं करता है, तो आपको यह त्रुटि मिलती है।
उदाहरण के लिए:पासिंग "Hello"
एक पैरामीटर के लिए जो संख्यात्मक है, आपको एक त्रुटि मिलती है। पासिंग "1234"
तुम नहीं। कृपया ध्यान दें कि रिक्त स्ट्रिंग या रिक्त स्थान वाली स्ट्रिंग को संख्यात्मक मान में परिवर्तित नहीं किया जा सकता है!
हालांकि, यह कहा जाना चाहिए कि ऐसा करना अच्छी शैली नहीं है। आपको यह सुनिश्चित करना चाहिए कि समस्याओं से बचने के लिए आपके द्वारा अपने एप्लिकेशन में उपयोग किए जाने वाले प्रकार डेटाबेस के प्रकारों से मेल खाते हैं। हो सकता है कि आपको string
की आवश्यकता क्यों है, इस बारे में कुछ और विवरण आपके आवेदन के प्रकार मदद कर सकते हैं।
1 संपादित करें
क्वेरी के लिए पैरामीटर को वैकल्पिक बनाने के लिए, जाने का तरीका निम्नलिखित होगा:
- वैकल्पिक पैरामीटर जैसे
WHERE RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID)
को अनुमति देने के लिए अपना SQL कथन बदलें । @Raumklasse_ID
न जोड़ें पैरामीटर अगर यह वैकल्पिक होना चाहिए या मान जोड़ेंDBNull.Value
आपको वास्तव में अपनी string
changing को बदलने पर विचार करना चाहिए गुणों को अशक्त प्रकारों जैसे int?
।
2 संपादित करें
इस प्रकार आपका कोड मेरे द्वारा संपादित 1 में सुझाए गए परिवर्तनों को लागू करते हुए दिखाई दे सकता है:
using (SqlCommand cmd = new SqlCommand(@"SELECT r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID FROM RAUM r WHERE RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID) OR STADT_ID = ISNULL(@Stadt_ID, STADT_ID) OR GEBAEUDE_ID = ISNULL(@Gebaeude_ID, GEBAEUDE_ID) OR REGION_ID = ISNULL(@Region_ID, REGION_ID)", con))
{
con.Open();
if (!String.IsNullOrWhitespace(RAUMKLASSE_ID))
cmd.Parameters.AddWithValue("@Raumklasse_ID", RAUMKLASSE_ID);
else
cmd.Parameters.AddWithValue("@Raumklasse_ID", DBNull.Value);
if (!String.IsNullOrWhitespace(STADT_ID))
cmd.Parameters.AddWithValue("@Stadt_ID", STADT_ID);
else
cmd.Parameters.AddWithValue("@Stadt_ID", DBNull.Value);
if (!String.IsNullOrWhitespace(GEBAEUDE_ID))
cmd.Parameters.AddWithValue("@Gebaeude_ID", GEBAEUDE_ID);
else
cmd.Parameters.AddWithValue("@Gebaeude_ID", DBNull.Value);
if (!String.IsNullOrWhitespace(REGION_ID))
cmd.Parameters.AddWithValue("@Region_ID", REGION_ID);
else
cmd.Parameters.AddWithValue("@Region_ID", DBNull.Value);
...
}