web-dev-qa-db-ja.com

インデックス(ゼロベース)はゼロ以上である必要があります

ちょっとエラーが発生します:

インデックス(ゼロベース)は、ゼロ以上で、引数リストのサイズより小さくなければなりません。

私のコード:

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));
}
104
G Gr

2番目のString.Formatはプレースホルダーとして{2}を使用しますが、1つの引数のみを渡すため、代わりに{0}を使用する必要があります。

これを変更:

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

これに:

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

この行では:

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

トークン{2}は、パラメーターに1つのアイテムしかないため無効です。代わりにこれを使用してください:

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

この行を変更します。

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

これは、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);

}
3
SkeetJon

String.Formatは、次のようにゼロインデックス「{0}」で始まる必要があります。

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

1
parag