C# 如何将所有查询结果附加到DataGridView?

C# 如何将所有查询结果附加到DataGridView?,c#,C#,因此,基本上我试图将foreach循环查询的所有结果附加到datagrid2,但我没有得到它。谁能给我指出正确的方向吗 foreach (DataGridViewRow row in dataGridView1.Rows) { if (row != null) { string col1 = row.Cells["F2"].Value.ToString(); strin

因此,基本上我试图将foreach循环查询的所有结果附加到datagrid2,但我没有得到它。谁能给我指出正确的方向吗

foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (row != null)
            {
                string col1 = row.Cells["F2"].Value.ToString();
                string col2 = row.Cells["F3"].Value.ToString();
                string col3 = row.Cells["F9"].Value.ToString();
                string like = "'" + "%" + col3 + col1 + col2 + "%" + "'";

                using (SqlConnection connection = new SqlConnection(ConnectionString))
                {
                    connection.Open();

                    string query = string.Format("query" + like);
                    using (SqlCommand cmd = connection.CreateCommand())
                    {
                        cmd.CommandText = query;
                        cmd.CommandType = CommandType.Text;
                        SqlDataAdapter dAdapter = new SqlDataAdapter(cmd);

                        try
                        {
                            DataTable dt = new DataTable();
                            dAdapter.Fill(dt);
                            dataGridView2.DataSource = dt;
                        }
                        catch (Exception exceptionObject)
                        {
                            MessageBox.Show(exceptionObject.ToString());
                        }
                    }
                }
            }
        }

基本问题是,在循环的每个迭代中都要为网格绑定数据源,因此它只会显示上一次迭代中的内容。然而,我真的想知道你是否需要一个循环。在循环中查询数据库通常不是一个好主意。在这里这样做的目的是什么?您可以使用循环构建单个查询,然后将网格绑定到该查询的结果吗?不要调用datatable构造函数:datatable dt=new datatable();调用DataTable会清除该表,从而释放旧数据。只需在第一次查询之前调用构造函数即可。@David这样做的原因是我从datagrid1中获取每一行,并为每一行生成一个新查询。@TonyBasita:您为每一行查询一次的原因是因为您为每一行查询一次?这不是理由,这是重复。结果查询是什么?为什么不能将它们组合起来?基本问题是,在循环的每个迭代中都要绑定网格的数据源,因此它只会显示上一次迭代中的数据。然而,我真的想知道你是否需要一个循环。在循环中查询数据库通常不是一个好主意。在这里这样做的目的是什么?您可以使用循环构建单个查询,然后将网格绑定到该查询的结果吗?不要调用datatable构造函数:datatable dt=new datatable();调用DataTable会清除该表,从而释放旧数据。只需在第一次查询之前调用构造函数即可。@David这样做的原因是我从datagrid1中获取每一行,并为每一行生成一个新查询。@TonyBasita:您为每一行查询一次的原因是因为您为每一行查询一次?这不是理由,这是重复。产生的查询是什么?为什么不能合并它们?