Home > front end >  How to run multiple data readers on single my sql connection
How to run multiple data readers on single my sql connection

Time:12-14

MySqlConnection con = GetConnection();
            string sql = "SELECT COUNT(ID) FROM booking WHERE DATE(Booking_Date) = CURDATE()";
            string sql2 = "SELECT SUM(Fare) FROM booking WHERE DATE(Booking_Date) = CURDATE()";
            MySqlCommand cmd = new MySqlCommand(sql, con);
            cmd.CommandType = System.Data.CommandType.Text;
            MySqlDataReader BookingToday = cmd.ExecuteReader();
            while (BookingToday.Read())
            {
                label6.Text = BookingToday.GetValue(0).ToString();
            }

This is my C# code and I want to run both the given queries to get result at once. But I don't know how to run multiple data readers on single connection or run 2 connections at once. Anyone please help me in this regard

CodePudding user response:

You can use one query:

string sql = "SELECT COUNT(ID), SUM(Fare) FROM booking WHERE DATE(Booking_Date) = CURDATE()";

CodePudding user response:

In this specific case: you don't need to - you can use the code shown in slaakso's answer to perform both aggregates in one query.

In the more general case:

using (var reader = cmd1.ExecuteReader())
{
  // while .Read(), etc
}
using (var reader = cmd2.ExecuteReader())
{
  // while .Read(), etc
}

i.e. sequentially and not overlapping (unless your provider supports the equivalent of "MARS").

You can also often issue multiple queries (select) in a single command; you use NextResult() to move between them:

using (var reader = cmd.ExecuteReader())
{
  // while .Read(), etc, first grid
  if (reader.NextResult())
  {
    // while .Read(), etc, second grid
  }
}
  • Related