Confundido entre SqlCommand y SqlDataAdapter

todos soy estudiante y nuevo en .NET y especialmente en el desarrollo de MVC3, pero para uno de mis proyectos tengo que trabajar en ello y así pasar por la fase de aprendizaje. El problema y la confusión que estoy enfrentando se relaciona con DB-Connectivity, lo que me hago difícil. d con respecto a la recuperación de registros de una base de datos es algo como esto:

//Method One:
var conn = new SqlConnection(conString.ConnectionString);
const string cmdString = "Select * FROM table";
var cmd = new SqlCommand(cmdString, conn); 
var mySqlDataAdapter = new SqlDataAdapter(cmd);
mySqlDataAdapter = new SqlDataAdapter(cmd);
mySqlDataAdapter.Fill(myDataSet, "design");
// making a new SqlCommand object with stringQuery and SqlConnection object THEN a new SqlDataAdapter object with SqlCommand object and THEN filling up the table with the resulting dataset.

Pero mientras estaba revisandoMSDN Library descubrí que SqlDataAdapter ofrece un constructor SqlDataAdapter (String, String) que toma directamente un SelectCommand y una cadena de conexión para iniciar, omitiendo así el rol de SqlCommand en el medio, de esta manera:

//Method Two:
var conn = new SqlConnection(conString.ConnectionString);
const string cmdString = "Select * FROM table";
var mySqlDataAdapter = new SqlDataAdapter(cmdString, conn);
mySqlDataAdapter.Fill(myDataSet, "design");

Se ve corto y bonito para mí, pero estoy confundido aquí de que si esto es posible de esta manera, ¿por qué la mayoría de los libros / maestros pasan antes (a la manera de SqlCommand)?

¿Cuál es realmente la diferencia entre SqlCommand y SqlDataAdapter? ¿Qué método es mejor uno o dos? ¿Me temo que estoy usando un acceso directo en el método dos que podría afectar la seguridad o el rendimient

¡Disculpando de antemano si sueno muy novato o borroso! ¡Apreciaré cualquier ayuda que pueda aclarar mis conceptos! ¡Gracias! :)

Respuestas a la pregunta(2)

Su respuesta a la pregunta