2013-08-06 5 views
12

मुझे सी # से ओडीबीसी क्वेरी पर पैरामीटर बाध्य करने की आवश्यकता है। यह नमूना कोड है, लेकिन वीएस मुझे बताता है कि एक पैरामीटर गुम है।ओडीबीसी सी # के माध्यम से पैरामीटर कैसे बाध्य करें?

OdbcCommand cmd = conn.CreateCommand(); 

cmd.CommandText = "SELECT * FROM user WHERE id = @id"; 
cmd.Parameters.Add("@id", OdbcType.Int).Value = 4; 
OdbcDataReader reader = cmd.ExecuteReader(); 

ओडीबीसी पर बाध्यकारी मूल्यों के लिए वाक्यविन्यास क्या है?

+0

सटीक त्रुटि संदेश क्या है? – Steve

+0

त्रुटि [07002] [माइक्रोसॉफ्ट] [चालक ओडीबीसी माइक्रोसॉफ्ट एक्सेस] पैरामैत्री अपर्याप्तता। प्रीविस्टो 1. वह त्रुटि बताती है कि एक पैरामीटर गुम है। – pava91

+0

ओडीबीसी नामित पैरा का समर्थन नहीं करता है; http://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.parameters.aspx यह सामान्य '? 'प्लेसहोल्डर का उपयोग करता है - यदि आपके उपयोग का उपयोग OLEDB के बजाय ओडीबीसी का उपयोग करने का एक कारण है (जो उन्हें अनुमति देगा)? –

उत्तर

26

Odbc नामित पैरामीटर का उपयोग नहीं कर सकते। इसका मतलब है कि कमांड स्ट्रिंग प्रत्येक पैरामीटर के लिए प्लेसहोल्डर्स का उपयोग करती है और यह प्लेसहोल्डर एक प्रश्न चिह्न है, पैरामीटर नाम नहीं।

OdbcCommand.Parameters

तो फिर तुम ही वे किस क्रम में कमांड स्ट्रिंग

OdbcCommand cmd = conn.CreateCommand(); 
cmd.CommandText = "SELECT * FROM [user] WHERE id = ?"; 
cmd.Parameters.Add("@id", OdbcType.Int).Value = 4; 
OdbcDataReader reader = cmd.ExecuteReader(); 

तुम भी एक और समस्या है में दिखाई देते हैं में संग्रह में पैरामीटर जोड़ने होंगे, उपयोगकर्ता शब्द एक सुरक्षित है कीवर्ड प्रति एमएस एक्सेस डेटाबेस और यदि आप इसे फ़ील्ड नाम या टेबल नाम के रूप में उपयोग करना चाहते हैं तो स्क्वायर ब्रैकेट के साथ प्रत्येक संदर्भ को संलग्न करना आवश्यक है। मैं दृढ़ता से सुझाव देता हूं, यदि संभव हो, तो उस तालिका के नाम को बदलने के लिए क्योंकि आप अक्सर इस समस्या को दबाएंगे।

+0

यह सही है! धन्यवाद – pava91

+0

@ pava91: इसे सही उत्तर के रूप में चिह्नित करें ... – MiMo

6

@ के स्थान पर @ का उपयोग करें यदि आप ओडीबीसी का उपयोग कर रहे हैं।

इस प्रकार करने की कोशिश करें:

OdbcCommand cmd = conn.CreateCommand(); 

cmd.CommandText = "SELECT * FROM user WHERE id = ?"; 
cmd.Parameters.Add("@id", OdbcType.Int).Value = 4; 
OdbcDataReader reader = cmd.ExecuteReader(); 
+1

मैं इसे समझने की कोशिश कर रहा एक पूरा घंटा बिताता हूं, धन्यवाद दोस्त !!!! –

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