Sheerwood John Caday
Sheerwood John Caday

Reputation: 229

how to display count in label text?

i am having a hard time to display my count code to my label text. here is my code and please tell me how to solve this problem.

ordering_and_billing.dBase dBase = new ordering_and_billing.dBase();
var mydbconnection = new dBase.dbconnection();

string sql = "SELECT * FROM `order` WHERE eventdate='" + lbldte.Text + "'";

MySqlCommand cmd = new MySqlCommand(sql, mydbconnection.Connection);
mydbconnection.Connection.Open();
MySqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
    while (rdr.Read())
    {
        Int32 count = (Int32)cmd.ExecuteScalar();
        string disp = count.ToString();
        lblcount.Text = disp;
    }
}

Upvotes: 1

Views: 10375

Answers (3)

Sheerwood John Caday
Sheerwood John Caday

Reputation: 229

never mind guys i got my answer now.

ordering_and_billing.dBase dBase = new ordering_and_billing.dBase();
var mydbconnection = new dBase.dbconnection();

string sql = "SELECT * FROM `order` WHERE eventdate='" + lbldte.Text + "'";

MySqlCommand cmd = new MySqlCommand(sql, mydbconnection.Connection);
mydbconnection.Connection.Open();
MySqlDataReader rdr = cmd.ExecuteReader();
int count = 0;
while (rdr.Read())
{
    count ++;
}
lblcount.Text = count.ToString();

Upvotes: -1

Millie Smith
Millie Smith

Reputation: 4604

You should use SELECT COUNT(*) if all you want is the record count.

string sql = "SELECT COUNT(*) FROM `order` WHERE eventdate='" + lbldte.Text + "'";

However, keep in mind that rdr.Read() reads a new row from the sql query. Every time you get a new row, you're trying to rerun the sql command (which I'm guessing crashes) and then assign the count label. So you're trying to assign the count label count times. Use this construct instead:

int count = 0;
while (rdr.Read())
{
    count++;
}
lblcount.Text = count.ToString(); //only assigns to the Text property once

Upvotes: 0

void
void

Reputation: 7890

just use count function:

string sql = "SELECT COUNT(*) FROM `order` WHERE eventdate='" + lbldte.Text + "'";

also don't use ExecuteReader, use ExecuteScalar function if you want a single value like a count value:

lblcount.Text =cmd.ExecuteScalar().toString();

Upvotes: 5

Related Questions