显示表中的记录数

时间:2015-05-10 17:32:24

标签: c# sql count

我尝试使用C#Windows窗体显示记录数(在表格中)。芽它显示" 1"作为每次的输出。这是代码。

private void button1_Click(object sender, EventArgs e)
{
    string constr = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Visual Studio/database.mdf;Integrated Security=True";
    SqlConnection con = new SqlConnection(constr);
    con.Open();
    string query= "select Count(*) from Student where Name like '%b%' ";
    SqlCommand cmd = new SqlCommand(query1, con);
    SqlDataReader dr = cmd.ExecuteReader();
    int count = 1;
    while (dr.Read())
        {count++;}
    label1.Text ="Following records : "+count+" ";
}

3 个答案:

答案 0 :(得分:0)

选择count(*)会返回一条记录,其中包含表格中行数的列值。您不需要计算结果中的行数,只需要从第一行(也是唯一的)行获取它:

int count = 0;
if (dr.Read()) {
    count = dr.GetInt32(0);
} else {
    // something went horribly wrong. Throw an exception perhaps?
}

答案 1 :(得分:0)

如果您需要计算all条记录,则需要从查询中删除LIKE过滤条件。

您不必使用SqlDataReader - ExecuteScalar就足够了。 首先,您的代码应为:

private void button1_Click(object sender, EventArgs e)
{
    string constr = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Visual Studio/database.mdf;Integrated Security=True";
    SqlConnection con = new SqlConnection(constr);
    con.Open();
    string query= "select Count(*) from Student";
    SqlCommand cmd = new SqlCommand(query1, con);
    int count = (int)cmd.ExecuteScalar();
    label1.Text ="Following records : "+count+" ";
}

另外,请考虑学习using语句,该语句强制执行释放和处理资源的良好实践。

使用数据库连接,事务和命令时非常重要。 SqlCommand with using statement

答案 2 :(得分:0)

我认为您应该使用rownum函数,它会显示每条记录的编号以获取更多信息,请查看此链接http://docs.oracle.com/cd/B12037_01/server.101/b10759/pseudocolumns008.htm