2009-10-08 11 views
7

मेरी मदद कृपया, मैं क्या निम्नलिखित कोड के साथ गलत हो सकता है पता नहीं है:ASP.NET ODBC क्वेरी के साथ मानकों

 OdbcConnection conn = new OdbcConnection(connString); 
     String query = "INSERT INTO customer (custId, custName, custPass, "+ 
         "custEmail, custAddress, custAge) VALUES (" + 
         "@ID, @Name, @Pass, @Email, @Address, @Age)"; 

     OdbcCommand exe = new OdbcCommand(query, conn); 
     exe.Parameters.Add("@ID", OdbcType.UniqueIdentifier).Value = id; 
     exe.Parameters.Add("@Name", OdbcType.VarChar).Value = name; 
     exe.Parameters.Add("@Pass", OdbcType.VarChar).Value = pass; 
     exe.Parameters.Add("@Email", OdbcType.VarChar).Value = email; 
     exe.Parameters.Add("@Address", OdbcType.VarChar).Value = address; 
     exe.Parameters.Add("@Age", OdbcType.Int).Value = age; 
     conn.Open(); 
     exe.ExecuteNonQuery(); // ERROR [07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 6. 

इस कोड को जब मैं क्वेरी निष्पादित करने के लिए कोशिश कर रहा हूँ मुझे Too few parameters. त्रुटि फेंकता है। डेटाबेस ठीक है, जब मैं पैरामीटर का उपयोग करने के बजाय क्वेरी में हार्डकोड करता हूं तो यह ठीक काम करता है।

धन्यवाद।

+1

पास बदलते इसे एएसपी पहचानकर्ता के साथ मिश्रित हो रही है ... – halocursed

उत्तर

31

MSDN से:

CommandType पाठ सेट किया जाता है, ODBC के लिए .NET फ्रेमवर्क डेटा प्रदाता करता है नामित पैरामीटर को एसक्यूएल कथन में या ओडीबीसी कॉमांड द्वारा संग्रहीत एक संग्रहीत प्रक्रिया में समर्थन करने का समर्थन नहीं करते हैं। इनमें से किसी भी मामले में, प्रश्न चिह्न (?) प्लेसहोल्डर का उपयोग करें। उदाहरण के लिए:

SELECT * FROM Customers WHERE CustomerID = ? 

OdbcConnection conn = new OdbcConnection(connString); 
    String query = "INSERT INTO customer (custId, custName, custPass, "+ 
        "custEmail, custAddress, custAge) VALUES (" + 
        "?, ?, ?, ?, ?, ?)"; 

पैरामीटर मायने रखता है के आदेश करने के लिए आपकी क्वेरी पुनर्लेखन!

संपादित करें: पैरामीटर इस तरह से जोड़ा जा सकता है:

OdbcCommand exe = new OdbcCommand(query, conn); 
exe.Parameters.Add("ID", OdbcType.UniqueIdentifier).Value = id; 
exe.Parameters.Add("Name", OdbcType.VarChar).Value = name; 
exe.Parameters.Add("Pass", OdbcType.VarChar).Value = pass; 
exe.Parameters.Add("Email", OdbcType.VarChar).Value = email; 
exe.Parameters.Add("Address", OdbcType.VarChar).Value = address; 
exe.Parameters.Add("Age", OdbcType.Int).Value = age; 
+1

आपको बहुत धन्यवाद, यह मदद मिली =) –

+1

ओडीबीसी का उपयोग फिल्म निर्माता को करने के लिए, यह वाक्यविन्यास .NET पर्यावरण में पूरी तरह से काम करता है, और पैरामीटर गिनती के YES आदेश! –

+0

यदि क्वेरी पैरामीटर का नाम नहीं दिया गया है, 'पैरामीटर्स। एड()' सेवा में पहला पैरामीटर क्या है? –

0

आपकी क्वेरी में आपके कॉलम में से कोई एक मौजूद नहीं है।
कृपया अपने कॉलम नामों की जांच करें।

0

आमतौर पर जब आप अपने SQL कथन में कॉलम नाम गलत करते हैं तो आप इसे देखेंगे। क्या आप उन कॉलम नामों (custId, custName, आदि) के बारे में सुनिश्चित हैं?

+0

मैं बहुत यकीन है, के बाद से अगर मैं की तीसरी लाइन बदलने शायद passw करने की कोशिश मेरी वास्तविक मूल्यों के लिए क्वेरी यह ठीक काम करता है। –

0

पास बदलते इसे एएसपी पहचानकर्ता के साथ मिश्रित हो रही है शायद passw करने की कोशिश ...

+0

मदद नहीं करता है, मुझे एक ही त्रुटि संदेश दिखाई देता है (( –

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