2012-12-19 21 views
7

का उपयोग करके npgsql के लिए कथन की तरह मेरे पास एक पोस्टग्रेस्क्ल डीबी है और मैं उपयोगकर्ता द्वारा दर्ज किए गए नाम से मेल खाने वाले सभी स्थानों के नाम पुनर्प्राप्त करने के लिए "स्थान" तालिका से पूछताछ करना चाहता हूं। कॉलम नाम "स्थान नाम" है। मैं सी # के साथ एएसपीनेट का उपयोग कर रहा हूँ।पैरामीटर

NpgsqlConnection con = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ToString()); 

NpgsqlCommand cmd = new NpgsqlCommand("Select * from \"Locations\" where \"LocationName\" LIKE \"%@loc_name%\"", con); 

cmd.Parameters.AddWithValue("@loc_name", Location_Name); 

NpgsqlDataReader reader = cmd.ExecuteReader(); 

मैं इस अपवाद:

Npgsql.NpgsqlException: ERROR: 42703: column "%((E'My place'))%" does not exist 

मैं% का उपयोग किए बिना क्वेरी चलाने की कोशिश की है, लेकिन यह काम नहीं करता। मैं भी का उपयोग कर + और & नीचे दिए गए लेकिन है कि या तो काम नहीं किया तरह की कोशिश की है:

Npgsql.NpgsqlException: ERROR: 42725: operator is not unique: unknown + unknown 
+0

आपके लिए अंतिम प्रश्न: पोस्टग्रेस ऑपरेटर का उपयोग कर रहा है || तारों को संयोजित करने के लिए, प्लस (+) नहीं। – alfoks

उत्तर

12

आप

का उपयोग करना चाहिए: उपरोक्त लाइन के साथ

string query = "Select \"LocationName\" from \"Locations\" where \"LocationName\" LIKE '%'+ :loc_name +'%'"; 

, मैं इस अपवाद

NpgsqlCommand cmd = new NpgsqlCommand("Select * from \"Locations\" where \"LocationName\" LIKE @loc_name", con); 
cmd.Parameters.AddWithValue("@loc_name", "%" + Location_Name + "%"); 

आप बहुत अधिक उद्धरण डाल रहे थे: पोस्टग्रे फ़ील्ड/टेबल-नाम के रूप में डबल कोट के बीच स्ट्रिंग की व्याख्या करता है। पैरामीटर को एस्केप-स्ट्रिंग जॉब

पीएस .: पोस्टग्रे में स्ट्रिंग को संयोजित करने के लिए आपको || ऑपरेटर का उपयोग करना चाहिए, here देखें। तो आपकी आखिरी क्वेरी

string query = "Select \"LocationName\" from \"Locations\" where \"LocationName\" LIKE '%' || :loc_name || '%'"; 
+0

यह काम किया !! अब यह सभी मिलान पंक्तियों को वापस कर रहा है। मदद के लिए धन्यवाद और इतनी त्वरित प्रतिक्रिया के लिए @trippino धन्यवाद। – Namrata

+0

आपकी मदद करने के लिए खुशी हुई। ढेर अतिप्रवाह में आपका स्वागत है :) –