这是我的代码,但这只是给出了最后一条记录。但我需要逐一记录所有记录
string query = "select * from tbl_users;";
SqlCommand com = new SqlCommand(query, con);
con.Open();
SqlDataReader reader = com.ExecuteReader();
for (int x = 0; x <= total; x++)
{
dataGridView1.Rows.Add();
while (reader.Read())
{
dataGridView1.Rows[x].Cells["colNic"].Value = reader["NIC"].ToString();
dataGridView1.Rows[x].Cells["colName"].Value = reader["name"].ToString();
dataGridView1.Rows[x].Cells["colAge"].Value = reader["age"].ToString();
dataGridView1.Rows[x].Cells["colCity"].Value = reader["city"].ToString();
}
}
con.Close();
答案 0 :(得分:2)
我从上面看到的是你实际上想要将datagridview中的每条记录添加为行,因此以下内容应该是代码:
string query = "select * from tbl_users;";
SqlCommand com = new SqlCommand(query, con);
con.Open();
SqlDataReader reader = com.ExecuteReader();
while (reader.Read())
{
int x = dataGridView1.Rows.Add(); // add new row for each db row in grid
// and use index returned by it
DataGridViewRow currentRow = dataGridView1.Rows[x];
currentRow.Cells["colNic"].Value = reader["NIC"].ToString();
currentRow.Cells["colName"].Value = reader["name"].ToString();
currentRow.Cells["colAge"].Value = reader["age"].ToString();
currentRow .Cells["colCity"].Value = reader["city"].ToString();
}
dataGridView1.Rows.Add()
将为新创建的行返回索引,因此您应该使用它,实际上不需要for
循环,只需使用{{1}迭代所有返回的行并继续逐行添加行。
此处的另一个建议是,如果您只需要特定列,则在从表中选择记录时不要使用while
,请始终在查询中指定所需的列,如:
*
希望它有所帮助。