SQL call for a scalar
I am not sure about the Private/Public scope of this method, someone else will have to talk about that.  but you can return inside a using statement, so instead of this:

private String GetString(long index)
{
  String output;
  using (SqlCommand command = new SqlCommand(CommandText, Connection))
  {
    command.Connection.Open();
    output = command.ExecuteScalar() as String;
    command.Connection.Close();
  }
  return output;
}


you would just return like this

private String GetString(long index)
{
  using (SqlCommand command = new SqlCommand(CommandText, Connection))
  {
    return (command.ExecuteScalar()).ToString();
  }
}


The Command is automatically taken care of so you don't have to worry about explicitly disposing of it. 

I assume that the connection is opened and closed by the piece of code that calls this private method, so I left out the connection open and close.  

I am kind of on edge about doing it that way, but it seems like you would only want to open one connection for all the SqlCommands that you need to run during the course of the application run.