我很难将我的计数代码显示在我的标签文字中。这是我的代码,请告诉我如何解决这个问题。
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;
}
}
答案 0 :(得分:5)
只需使用count
功能:
string sql = "SELECT COUNT(*) FROM `order` WHERE eventdate='" + lbldte.Text + "'";
也不要使用ExecuteReader
,如果您想要一个像计数值这样的值,请使用ExecuteScalar
函数:
lblcount.Text =cmd.ExecuteScalar().toString();
答案 1 :(得分:0)
如果你想要的只是记录数,你应该使用SELECT COUNT(*)
。
string sql = "SELECT COUNT(*) FROM `order` WHERE eventdate='" + lbldte.Text + "'";
但是,请记住rdr.Read()
从sql查询中读取新行。 每次时间你得到一个新行,你试图重新运行sql命令(我猜是崩溃),然后分配count
标签。因此,您尝试分配count
标签计数次。请改用此构造:
int count = 0;
while (rdr.Read())
{
count++;
}
lblcount.Text = count.ToString(); //only assigns to the Text property once
答案 2 :(得分:-1)
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();