2011-03-15 21 views
85

के बराबर होना चाहिए अरे मैं एक त्रुटि प्राप्त हो रही:सूचकांक (शून्य आधारित) शून्य से अधिक या

Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

मेरे कोड:

OdbcCommand cmd = new OdbcCommand("SELECT FirstName, SecondName, Aboutme FROM User WHERE UserID=1", cn); 

OdbcDataReader reader = cmd.ExecuteReader(); 
while (reader.Read()) 
{ 
    Name.Text = String.Format("{0} {1}", reader.GetString(0), reader.GetString(1)); 
    Aboutme.Text = String.Format("{2}", reader.GetString(0)); 
} 
+6

आपने प्रारूपक में पैरामीटर की अनुक्रमणिका के साथ पाठक में तर्क की अनुक्रमणिका को स्थानांतरित किया। अपने 'aboutme.Text = 'में 0 के साथ 2 स्विच करें। – tvanfosson

+9

स्ट्रिंग। फॉर्मेट अद्वितीय प्लेसहोल्डर्स प्रति-वर्ग और न ही प्रति-समाधान का उपयोग नहीं करता है। प्रत्येक बार स्ट्रिंग है। स्ट्रिंग। फोर्मेट कहा जाता है, इसलिए कृपया {0} और {1} के आधार पर इसे {2} तक बढ़ाएं! – RichardTheKiwi

+1

किसी भी कारण से आप ओडीबीसी बनाम .NET कनेक्टर का उपयोग कर रहे हैं? –

उत्तर

144

आपकी दूसरी String.Format एक प्लेसहोल्डर लेकिन आप के रूप {2} का उपयोग करता है केवल एक तर्क में गुजर रहा है, इसलिए आपको इसके बजाय {0} का उपयोग करना चाहिए।

बदलें इस:

String.Format("{2}", reader.GetString(0)); 

इस के लिए:

String.Format("{0}", reader.GetString(2)); 
7

बदलें इस लाइन:

Aboutme.Text = String.Format("{0}", reader.GetString(0)); 
19

इस पंक्ति में:

Aboutme.Text = String.Format("{2}", reader.GetString(0)); 

टोकन {2} अमान्य है क्योंकि आपके पास केवल पैरा में एक आइटम है। बजाय इस का उपयोग करें:

Aboutme.Text = String.Format("{0}", reader.GetString(0)); 
1

यह भी हो सकता है जब एक ArgumentExceptionArgumentException निर्माता अधिभार

public static void Dostuff(Foo bar) 
{ 

    // this works 
    throw new ArgumentException(String.Format("Could not find {0}", bar.SomeStringProperty)); 

    //this gives the error 
    throw new ArgumentException(String.Format("Could not find {0}"), bar.SomeStringProperty); 

} 
0
using System; 

namespace ConsoleApp1 
{ 
    class Program 
    { 
     static void Main() 
     { 
      Console.WriteLine("Enter Your FirstName "); 
      String FirstName = Console.ReadLine(); 

      Console.WriteLine("Enter Your LastName "); 
      String LastName = Console.ReadLine(); 
      Console.ReadLine(); 

      Console.WriteLine("Hello {0}, {1} " + FirstName, LastName); 
      Console.ReadLine(); 

     } 
    } 
} 

Picture

+0

यहां, जब मैं यह क्वेरी चलाता हूं। कमांड लाइन में यह "हैलो पराग पटेल" जैसी अंतिम पंक्ति मुद्रित नहीं करता है, लेकिन यह त्रुटि दिखा रहा है "सिस्टम। फोर्मेट अपवाद संदेश = अनुक्रमणिका (शून्य आधारित) शून्य से अधिक या बराबर होना चाहिए और आकार के आकार से कम होना चाहिए तर्क सूची। " – parag

0

String.Format से प्रारंभ होना चाहिए फेंकने के लिए जहाँ आप अनजाने में फोन की कोशिश कर रहा शून्य सूचकांक "{0}" इस तरह:

Aboutme.Text = String.Format("{0}", reader.GetString(0)); 
संबंधित मुद्दे