Seu segundo
String.Format
usa {2}
como um espaço reservado, mas você está passando apenas um argumento, então você deve usar {0}
em vez de. Mude isso:
String.Format("{2}", reader.GetString(0));
Para isso:
String.Format("{0}", reader.GetString(2));