试图逐个将表格记录到数据网格视图中

时间:2018-02-15 18:43:36

标签: c# mysql sql-server

这是我的代码,但这只是给出了最后一条记录。但我需要逐一记录所有记录

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();

1 个答案:

答案 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,请始终在查询中指定所需的列,如:

*

希望它有所帮助。