IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

plusieurs mysqldatareader pour une connexion


Sujet :

C#

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut plusieurs mysqldatareader pour une connexion
    bonjour,

    j'ai un objet reservation qui contient des données du style Client client,Menu menu etc..

    j'effectue une requete sql du type "select * from reservation where..."
    Je recupere mes données en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MySqlDataReader resultat = mysql.DoSelectMultiple(sql);
    puis j'initialise mes objets reservations en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (resultat.Read())
                {
                    reservations.Add(InitReservation(resultat));
                }
    methode InitReservation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public static Reservation InitReservation(MySqlDataReader mysqlDataReader)
            {
                Reservation reservation = new Reservation();
                reservation.Id = Convert.ToInt32(mysqlDataReader[0]);
                DateTime date = new DateTime();
                DateTime.TryParse(mysqlDataReader[1].ToString(), out date);
                reservation.DateReservation = date;
                reservation.NbPersonnes = Convert.ToInt32(mysqlDataReader[2]);
                reservation.ClientRes = ClientService.GetClient(Convert.ToInt32(mysqlDataReader[3]));
                reservation.Menu = MenuService.GetMenuByID(Convert.ToInt32(mysqlDataReader[4]));
                reservation.Tables = TableService.GetTablesByReservation(reservation.Id);
                reservation.Serveurs = ServeurService.GetServeursNbTable(reservation.NbPersonnes);
                reservation.Clients = ClientService.GetClientsByReservation(reservation.Id);
     
                return reservation;
            }
    la methode ClientService.GetClient(Convert.ToInt32(mysqlDataReader[3])); recupere dans la base de donnée les info du client et donc utilise aussi une connexion mysql , de ce faite j'ai une erreur comme quoi ma connexion est deja ouverte ce qui est normal...

    Si je ferme ma connexion mysql avant le while (resultat.Read()) il ferme aussi le mysqlDataReader.. je suis un peu bloqué la...

    je voulais eviter de faire une requete sql avec plein de jointure pour recuperer les informations de la reservation..

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    en faite je me suis arrangé autrement..

    j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    while (resultat.Read())
                {
                    reservations.Add(InitReservation(resultat));
                }
                mysql.CloseConnection();
                resultat.Close();
                foreach (Reservation reservation in reservations)
                {
                    reservation.ClientRes = ClientService.GetClientByReservation(reservation.Id);
                    reservation.Menu = MenuService.GetMenuByReservation(reservation.Id);
                    reservation.Tables = TableService.GetTablesByReservation(reservation.Id);
                    reservation.Serveurs = ServeurService.GetServeursNbTable(reservation.NbPersonnes);
                    reservation.Clients = ClientService.GetClientsByReservation(reservation.Id);
                }
     
                return reservations;
     
            }
            public static Reservation InitReservation(MySqlDataReader mysqlDataReader)
            {
                Reservation reservation = new Reservation();
                reservation.Id = Convert.ToInt32(mysqlDataReader[0]);
                DateTime date = new DateTime();
                DateTime.TryParse(mysqlDataReader[1].ToString(), out date);
                reservation.DateReservation = date;
                reservation.NbPersonnes = Convert.ToInt32(mysqlDataReader[2]);   
                return reservation;
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Plusieurs requêtes pour une même connexion
    Par _shuriken_ dans le forum JDBC
    Réponses: 0
    Dernier message: 07/02/2011, 12h19
  2. Configurer MYSQL++ avec Dev-C++ pour une connexion à BDMySQL
    Par limouna dans le forum Installation
    Réponses: 1
    Dernier message: 24/07/2005, 21h25
  3. [C#] Plusieurs LinkButton pour une seule fonction
    Par FunnyDjo dans le forum ASP.NET
    Réponses: 3
    Dernier message: 08/06/2005, 22h01
  4. Réponses: 2
    Dernier message: 05/07/2004, 17h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo