2012-03-06 10 views
5

मैं एक GridView एक विधि PopulateGrid (बुलाया का उपयोग) (नीचे) को पॉप्युलेट लेकिन एक ही सर्वर त्रुटि हो रही रखने के लिए कोशिश कर रहा हूँ की घोषणा करनी चाहिए @QUALID "अदिश चर घोषित करना चाहिए" "।ASP.NET सी # अदिश चर

public void PopulateGrid() 
    { 
     String val = TextBox2.Text; 

     String sql = "SELECT QLEVELNAME FROM Qual_Levels WHERE [email protected]"; 
     SqlCommand cmd = new SqlCommand(sql, 
      new SqlConnection(ConfigurationManager.ConnectionStrings["RecruitmentDBConnString"].ConnectionString)); 

     cmd.Parameters.Add(new SqlParameter("QUALID", val)); 

     cmd.Connection.Open(); 


     SqlDataAdapter da = new SqlDataAdapter(sql, cmd.Connection); 

     DataSet ds = new DataSet(); 
     da.Fill(ds, "Qual_Levels"); 


     SelectionGrid.DataSource = ds; 
     SelectionGrid.DataBind(); 


     ds.Dispose(); 
     da.Dispose(); 
     cmd.Connection.Close(); 
     cmd.Connection.Dispose(); 
    } 

GridView इसलिए की तरह घोषित किया जा रहा है ..

<asp:GridView ID="SelectionGrid" 
      autogeneratecolumns="False" 
      runat="server" CellPadding="4" 
      ForeColor="#333333" GridLines="None" DataKeyNames="QUALID"> 

      <Columns> 
       <asp:BoundField DataField="QLEVELNAME" HeaderText="Level Name" 
        ReadOnly="True" SortExpression="name" /> 
      </Columns> 
</asp:GridView> 

अनगिनत बातें की कोशिश कर और मंचों मैं एक ही त्रुटि के खिलाफ आते हैं के माध्यम से trawling के बाद।

Server Error in '/' Application.

Must declare the scalar variable "@QUALID".

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Must declare the scalar variable "@QUALID".

Source Error:

Line 282: DataSet ds = new DataSet();

Line 283: da.Fill(ds, "Qual_Levels");

यदि कोई स्थिति पर कोई प्रकाश डाल सकता है तो मैं वास्तव में आभारी रहूंगा!

+0

सभी प्रतिक्रियाओं के लिए धन्यवाद, आम सहमति मैं हो रहा है है मैं अपने एसक्यूएल परम में @ लापता हूं लेकिन कोशिश की है और एक ही त्रुटि फेंक दी जा रही है। इसके अलावा मेरे पास मूल रूप से मेरी ड्रॉपडाउन सूचियों के लिए पोस्ट किए गए सटीक समान वाक्यविन्यास हैं जो ठीक काम कर रहे हैं। – PatrickJames

उत्तर

3

यह:

cmd.Parameters.Add(new SqlParameter("QUALID", val)); 

इस होना चाहिए:

cmd.Parameters.Add(new SqlParameter("@QUALID", val)); 

क्षमा करें, बहुत जल्दी आपके द्वारा लिखा गया, कोशिश:

cmd.Parameters.AddWithValue("@QUALID", val); 

ठीक है, आपके कोड में आपके पास थोड़ा अधिक मौलिक मुद्दा है। आप कमांड ऑब्जेक्ट बनाते हैं, लेकिन फिर आप SQL स्ट्रिंग और कमांड के कनेक्शन को अपने डेटा एडाप्टर में पास करते हैं, जहां यह आपके एसक्यूएल स्ट्रिंग को इसके कनेक्शन पर कोई पैरामीटर नहीं चलाएगा।

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

+0

त्वरित प्रतिक्रिया के लिए धन्यवाद लेकिन उपरोक्त में बदलने के बाद ही एक ही त्रुटि फेंक दी गई है। – PatrickJames

+0

एक ही त्रुटि फिर से! मुझे लगता है कि ये सभी वैध विकल्प हैं जो मुझे लगता है कि यह कहीं और हो रहा है। इच्छा है कि मुझे पता था! – PatrickJames

1

तो

cmd.Parameters.Add(new SqlParameter("@QUALID", val)); 
1

आप याद कर रहे हैं "@" जहां पैरामीटर जोड़ने की तरह अपने एसक्यूएल परम करने के लिए @ जोड़ने का प्रयास करें:

SqlParameter("@QUALID", val) 
1

परिवर्तन

cmd.Parameters.Add(new SqlParameter("QUALID", val)); 

को या तो

cmd.Parameters.Add(new SqlParameter("@QUALID", val)); 

या

cmd.Parameters.Add("@QUALID", SqlDbType.WhatFitsYourDB).Value = val; 

और तुम जाना अच्छा होना चाहिए। आपकी समस्या यह है कि आप एक पैरामीटर नाम

1
String val = TextBox2.Text; 

String sql = "SELECT QLEVELNAME FROM Qual_Levels WHERE [email protected]"; 
SqlCommand cmd = new SqlCommand(sql, new SqlConnection(ConfigurationManager.ConnectionStrings["RecruitmentDBConnString"].ConnectionString)); 
SqlDataAdapter da = new SqlDataAdapter(sql, cmd.Connection); 
DataSet ds = new DataSet(); 
cmd.Parameters.Add(new SqlParameter("@QUALID", val)); 

da.SelectCommand = cmd; 
cmd.Connection.Open(); 

da.Fill(ds, "Qual_Levels"); 


SelectionGrid.DataSource = ds; 
SelectionGrid.DataBind(); 

ds.Dispose(); 
da.Dispose(); 
cmd.Connection.Close(); 
cmd.Connection.Dispose(); 

उपयोग जिले से एक यह काम करेंगे में '@' याद कर रहे हैं ... (da.selectcommand = cmd;)

+0

आप जोड़ना चाहते हैं कि यह कोड के एक हिस्से को चिपकाने के बजाए क्यों काम करता है ... – Sinkingpoint

+0

यह वास्तव में एक संभावित समाधान है, मैं इसे संक्षेप में समझाने के लिए इसे नीच कर रहा हूं। ओपी के पास एक एसकएल कॉमांड ऑब्जेक्ट था लेकिन इसका कभी भी इस्तेमाल नहीं हुआ। "एसक्यूएल" स्ट्रिंग के बजाय selectcommand ऑब्जेक्ट का उपयोग करके एडाप्टर को प्रारंभ करने के लिए 'नया SqlDataAdapter (cmd)' भी एक आसान फिक्स है। पीएस: तीन अक्षर चर नामों का उपयोग करना अच्छा नहीं है, objCommand और strSql आज़माएं और पठनीयता को दोहराएं (मेरी राय में) –

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