2011-04-26 14 views
21

के मान को पुनर्प्राप्त करने के लिए executeReader() विधि का उपयोग कैसे करें मुझे निम्न आदेश निष्पादित करने और परिणाम को लेबल में पास करने की आवश्यकता है। मुझे नहीं पता कि मैं रीडर का उपयोग करके इसे कैसे कर सकता हूं। कोई मुझे हाथ दे सकता है?केवल एक सेल

String sql = "SELECT * FROM learer WHERE learer.id = " + index; 
SqlCommand cmd = new SqlCommand(sql,conn); 
learerLabel.Text = (String) cmd.ExecuteReader(); 

जैसा कि आप देख सकते हैं कि मैं SQL कथन बनाता हूं और मैं इसे निष्पादित करता हूं, लेकिन यह काम नहीं करता है। क्यूं कर?

कंसोल का कहना है:

नहीं किया जा सकता परोक्ष SqlDataReader स्ट्रिंग के लिए ...

कैसे मैं इतना लेबल वह ठीक से प्रदर्शित कर सकते हैं स्ट्रिंग के रूप में वांछित परिणाम प्राप्त कर सकते हैं।

+0

आपका कोड एसक्यूएल इंजेक्शन –

+0

([ग # में चुनिंदा गणना (\ *) का उपयोग करना] के संभावित डुप्लिकेट http://stackoverflow.com/questions/5701910/using- के लिए असुरक्षित है क्या जरूरत है चयन-गिनती-इन-सी-तेज) –

उत्तर

18

यह DataReader और Command.ExecuteReader उपयोग करने के लिए सिर्फ डेटाबेस से मूल्य पर प्राप्त करने के लिए अनुशंसित नहीं है। इसके बजाय, आप Command.ExecuteScalar निम्नलिखित के रूप में उपयोग करना चाहिए:

String sql = "SELECT ColumnNumber FROM learer WHERE learer.id = " + index; 
SqlCommand cmd = new SqlCommand(sql,conn); 
learerLabel.Text = (String) cmd.ExecuteScalar(); 

Here डेटाबेस से कनेक्ट और डेटा के प्रबंधन के बारे में अधिक जानकारी है।

36
using (var conn = new SqlConnection(SomeConnectionString)) 
using (var cmd = conn.CreateCommand()) 
{ 
    conn.Open(); 
    cmd.CommandText = "SELECT * FROM learer WHERE id = @id"; 
    cmd.Parameters.AddWithValue("@id", index); 
    using (var reader = cmd.ExecuteReader()) 
    { 
     if (reader.Read()) 
     { 
      learerLabel.Text = reader.GetString(reader.GetOrdinal("somecolumn")) 
     } 
    } 
} 
+0

"पाठक। गेटस्ट्रिंग (पाठक। गेटऑर्डिनल (" कुछ रंग "))" टेक्स्ट मान पुनर्प्राप्त करने का सबसे आसान तरीका है? reader.fieldByName ("name") जैसी कुछ भी नहीं है। AsString? – Rebelss

+1

मुझे 'ExecuteReader()' का उपयोग करने के तरीके के बारे में धन्यवाद और स्केलर को प्रश्न के रूप में नहीं पूछा गया है – AlbatrossCafe

+0

साइड नोट आप तालिका नामों के साथ ऐसा नहीं कर सकते हैं केवल चर – Robot70

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