2011-03-15 109 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 2011-03-15 18:47:49

+9

String.Format不使用每個類或每個解決方案的唯一佔位符。每次調用String.Format時都是每個字符串,所以請不要根據已使用的{0}和{1}將其增加到{2}! – RichardTheKiwi 2011-03-15 18:48:30

+1

您使用ODBC與.NET連接器的任何原因? – 2011-03-15 19:18:05

回答

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}無效,因爲您在parms中只有一個項目。試圖拋出ArgumentException,你不經意地打電話ArgumentException構造函數重載

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); 

} 
1

也會發生這種情況:使用該替代零索引「{0}」像這樣:

Aboutme.Text = String.Format("{0}", reader.GetString(0)); 
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

在這裏,當我運行此查詢。在命令行中它不打印最後一行,如「Hello Parag Patel」,但它顯示錯誤「發生System.FormatException異常 Message = Index(從零開始)必須大於或等於零並小於參數列表「。 – parag 2017-09-28 14:04:56

0

的String.Format必須開始時

Aboutme.Text = String.Format("{0}", reader.GetString(0)); 
相關問題