ちょっとエラーが発生します:
インデックス(ゼロベース)は、ゼロ以上で、引数リストのサイズより小さくなければなりません。
私のコード:
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));
}
2番目のString.Format
はプレースホルダーとして{2}
を使用しますが、1つの引数のみを渡すため、代わりに{0}
を使用する必要があります。
これを変更:
String.Format("{2}", reader.GetString(0));
これに:
String.Format("{0}", reader.GetString(2));
この行では:
Aboutme.Text = String.Format("{2}", reader.GetString(0));
トークン{2}は、パラメーターに1つのアイテムしかないため無効です。代わりにこれを使用してください:
Aboutme.Text = String.Format("{0}", reader.GetString(0));
この行を変更します。
Aboutme.Text = String.Format("{0}", reader.GetString(0));
これは、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);
}
String.Formatは、次のようにゼロインデックス「{0}」で始まる必要があります。
Aboutme.Text = String.Format("{0}", reader.GetString(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();
}
}
}