我尝试使用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+" ";
}
答案 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