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 ?

1voto

parag Points 11
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 votes

Ici, quand je lance cette requête. Dans la ligne de commande, il n'imprime pas la dernière ligne comme "Hello Parag Patel" mais il montre l'erreur "System.FormatException occurred Message=Index (zero based) must be greater than or equal to zero and less than the size of the argument list".

0 votes

Ce devrait être Console.WriteLine("Bonjour {0}, {1} ", FirstName, LastName) ;

0 votes

@Fenrir88, corrigé

1voto

SAAD K Points 51

Changez cette ligne :

Le 2 devrait être 0. Chaque compte commence à 0.

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

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

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