Tu segundo String.Format usa {2} como marcador de posición, pero solo está pasando un argumento, por lo que debe usar {0} en su lugar.
Cambia esto:
String.Format("{2}", reader.GetString(0));
A esto:
String.Format("{0}", reader.GetString(2));