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
,所以你可以得到任何一行。