Question

Juste une question rapide, car la plupart des blogs et des tutoriels que j'ai trouvés traitent des éléments de base de MySQL et de C #.

J'utilise le connecteur MySQL ADO.

J'ai tout configuré et je peux récupérer les données de la table. Mais je veux créer une méthode qui simplifie les choses pour moi. Je peux donc définir une chaîne de requête (dans la méthode ou dans l’objet), appeler une fonction et renvoyer une sorte d’objet de données.

// 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");
}

C'est ce que j'ai maintenant. Je pourrais probablement simplement renvoyer le lecteur. Mais cela nécessiterait une boucle for dans une boucle while à chaque fois, je voudrais parcourir certaines données.

Vous vous demandez s'il existe un meilleur objet de données que je pourrais remplir et retourner? Je voudrais aussi aimer les liens vers des documents à ce sujet.

Au fait, j'apprends le C #, il y a donc peut-être des choses sur lesquelles je ne suis pas tout à fait clair.

Était-ce utile?

La solution

Vous ne devez pas faire circuler le lecteur de données. Vous devez garder la connexion à la base de données ouverte tant que vous lisez à partir du lecteur de données. Vous devez donc lire les données souhaitées dans une collection afin de pouvoir fermer la connexion à la base de données le plus tôt possible.

Vous pouvez lire les données dans un DataSet ou un DataTable , ou vous pouvez créer des classes pour vos objets et les remplir directement. Exemple:

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);
}

Autres conseils

Pourquoi ne pas simplement utiliser le fournisseur ADO.NET pour MySql et renvoyer une norme DataSet ADO.NET ?

Cela présente l’avantage de garder votre code qui traite les données portables vers d’autres bases de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top