Pregunta

Solo unas preguntas rápidas, ya que la mayoría de los blogs y tutoriales que encontré tratan sobre los elementos muy básicos de MySQL y C #.

Estoy usando el conector ADO de MySQL.

Tengo todo configurado y puedo recuperar datos de la tabla. Pero quiero crear un método que simplifique las cosas para mí. Entonces puedo establecer una cadena de consulta (ya sea en el método o en el objeto) y llamar a una función y devolvería algún tipo de objeto de datos.

// For each row
while(reader.Read())
{
    // For each column
    for(int i = 0; i < reader.FieldCount; i++)
    {
        Console.Write(reader.GetName(i).ToString());
        Console.Write(reader.GetValue(i).ToString() + ",");
    }
    Console.Write("\n");
}

Esto es lo que tengo ahora. Probablemente podría devolverle el lector. Pero eso requeriría un ciclo for en un ciclo while cada vez que quisiera recorrer algunos datos.

¿Se pregunta si hay un mejor objeto de datos que podría llenar y devolver? También me encantaría tener enlaces a material de lectura sobre esto.

Por cierto, estoy aprendiendo C #, por lo que puede haber cosas que no tengo 100% claras.

¿Fue útil?

Solución

No debe pasar el lector de datos. Debe mantener abierta la conexión de la base de datos mientras esté leyendo el lector de datos, por lo que debe leer los datos que desee en alguna recopilación para poder cerrar la conexión de la base de datos lo antes posible.

Puede leer los datos en un DataSet o una DataTable , o puede crear clases para sus objetos y llenarlos directamente. Ejemplo:

List<SomeCustomObject> data = new List<SomeCustomObject>();
while(reader.Read()) {
   int id = reader.GetInt32(0);
   string name = reader.GetString(1);
   data.Add(new SomeCustomObject(id, name);
}

Otros consejos

¿Por qué no usar el proveedor ADO.NET para MySql y devolver un estándar ADO.NET DataSet ?

Esto tiene la ventaja de mantener su código que trata con los datos portátiles a otros backends de DB.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top