127 votes

L'indice (basé sur le zéro) doit être supérieur ou égal à zéro.

Hé, je continue à avoir une erreur :

L'index (basé sur zéro) doit être supérieur ou égal à zéro et inférieur à la taille de la liste d'arguments.

Mon code :

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

7 votes

Vous avez transposé l'index de l'argument dans le lecteur avec l'index du paramètre dans l'instruction de format. Remplacez 2 par 0 dans votre Aboutme.Text = .

9 votes

String.Format n'utilise pas de placeholders uniques par classe ou par solution. C'est par chaîne chaque fois que String.Format est appelé, donc s'il vous plaît ne l'augmentez pas à {2} basé sur {0} et {1} ayant été utilisé !

1 votes

Pour quelle raison utilisez-vous ODBC plutôt que le connecteur .NET ?

212voto

Ahmad Mageed Points 44495

Votre deuxième String.Format utilise {2} comme substitut mais vous ne passez qu'un seul argument, donc vous devriez utiliser {0} à la place.

Changez ça :

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

A ceci :

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

26voto

jfollas Points 787

Dans cette ligne :

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

Le jeton {2} n'est pas valide car vous n'avez qu'un seul élément dans les paramètres. Utilisez ceci à la place :

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

8voto

Mike Cole Points 4063

Changez cette ligne :

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

6voto

SkeetJon Points 627

Cela peut également se produire lorsque l'on essaie de lancer un ArgumentException où vous appelez par inadvertance le ArgumentException surcharge du constructeur

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

}

3voto

Kashif Faraz Points 181

String.Format doit commencer par l'indice zéro "{0}" comme ceci :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X