索引(从零开始)必须大于或等于零

G G*_* Gr 105 c# mysql sql asp.net

嘿我一直收到错误:

索引(从零开始)必须大于或等于零且小于参数列表的大小.

我的代码:

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));
}
Run Code Online (Sandbox Code Playgroud)

Ahm*_*eed 175

你的第二个String.Format使用{2}作为占位符,但你只传递一个参数,所以你应该使用{0}来代替.

改变这个:

String.Format("{2}", reader.GetString(0));
Run Code Online (Sandbox Code Playgroud)

对此:

String.Format("{0}", reader.GetString(2));
Run Code Online (Sandbox Code Playgroud)


jfo*_*las 22

在这一行:

Aboutme.Text = String.Format("{2}", reader.GetString(0));
Run Code Online (Sandbox Code Playgroud)

令牌{2}无效,因为您在parms中只有一个项目.请改用:

Aboutme.Text = String.Format("{0}", reader.GetString(0));
Run Code Online (Sandbox Code Playgroud)


Mik*_*ole 8

改变这一行:

Aboutme.Text = String.Format("{0}", reader.GetString(0));
Run Code Online (Sandbox Code Playgroud)


Ske*_*Jon 5

当试图抛出一个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);

}
Run Code Online (Sandbox Code Playgroud)