![](/img/trans.png)
[英]Display a number of usercontrol based on the number of records in the database
[英]Display number of records in a table
我正在嘗試使用C#Windows form顯示(表中)記錄數。 每次顯示為“ 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+" ";
}
選擇count(*)
將返回一條記錄 ,該記錄的列值包含表中的行數。 您不需要計算結果中的行數,只需從第一行(也是唯一的)中獲取它:
int count = 0;
if (dr.Read()) {
count = dr.GetInt32(0);
} else {
// something went horribly wrong. Throw an exception perhaps?
}
如果您需要計算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
語句的聲明,該語句強制執行釋放和處置資源的良好實踐。
使用數據庫連接,事務和命令時,這很重要。 使用using語句的SqlCommand
我認為您應該使用rownum函數,它將顯示每個記錄的編號以獲取更多信息。請檢查此鏈接http://docs.oracle.com/cd/B12037_01/server.101/b10759/pseudocolumns008.htm
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.