C# 尝试将表逐个记录到datagrid视图

C# 尝试将表逐个记录到datagrid视图,c#,mysql,sql-server,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++)

这是我的代码,但这只是最后一条记录。但我需要一个接一个的记录

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();
string query=“从tbl_用户中选择*”;
SqlCommand com=新的SqlCommand(查询,con);
con.Open();
SqlDataReader=com.ExecuteReader();

对于(int x=0;x我从上面了解到的是,您实际上希望将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()
将为新创建的行返回索引,因此您应该使用该索引,实际上对于
循环,您不需要该
,只需在
期间使用
迭代所有返回的行,并在网格中逐个添加行即可

这里的另一个建议是,从表中选择记录时不要使用
*
,如果您只需要特定的列,请始终在查询中指定您需要的列,如:

SELECT NIC,name,age,city FROM tbl_users

希望能有所帮助。

total
从何而来?它不应该从
reader
中派生出来,而不是在某个变量中硬编码吗?你确定你得到的是“最后一行”吗?你怎么知道?你的查询没有一个
order by
,所以你可以得到任何一行。