如何从多个数据库中收集数据并将它们绑定在单个datagridview中?

时间:2013-07-21 22:38:35

标签: datagridview dataset sqldataadapter

以下代码适用于单个DataSet但是当我尝试使用DataSet数组时,SqlDataAdapter.Fill()不起作用。基本上我要做的是连接6个不同的数据库并对它们运行相同的sql查询并收集所有数据并在单个dataGridView中显示6个dbs的整个数据。怎么做? 谢谢,

DataSet[] mySet = new DataSet[6];   
DataSet finSet = new DataSet();               

for (int j = 0; j <= 5; j++)

                myConnection.Open();

                for (int i = 0; i <= specRowCount - 2; i++)
                {

                    cleanDesc = dataGridView2.Rows[removalPointer].Cells[1].Value.ToString().Replace("'", "''").Trim();
                    classname = dataGridView2.Rows[removalPointer].Cells[0].Value.ToString().Trim();

                    str = "use " + myDatabases[j] + " SELECT top 1 x, y, z, t, h, f, d, " +
                    "s, d, c, s, a, d, f, g, " +
                    "s, f, a, dFROM tttt where c=1 and a=1 and " +
                    "d='" + cleanDesc + "' and d= '" + d+ "'";

                    myAdapter = new SqlDataAdapter(str, myConnection);

                    myAdapter.Fill(mySet[j], "tttt");


                    if (countRows != mySet[j].Tables["tttt"].Rows.Count)
                    {

                        mySb.AppendLine(dataGridView2.Rows[removalPointer].Cells[1].Value.ToString());


                        dataGridView2.Rows.Remove(dataGridView2.Rows[removalPointer]);


                    }
                    else
                    {

                        removalPointer++;

                    }



                    countRows = mySet[j].Tables["tttt"].Rows.Count;

                    finSet.Merge(setArray[j]);

                    dataGridView1.DataSource = finSet.Tables["tttt"];


                }
                myConnection.Close();

                MessageBox.Show("Con closed!");


            }

1 个答案:

答案 0 :(得分:0)

根据您向我们展示的代码,看起来问题是您从数据适配器填充mySet[j],然后将setArray[j]合并到finSet。因此,数据适配器中的数据永远不会进入finSet

另一件事:我很确定这段代码:

DataSet[] mySet = new DataSet[6]; 

...将创建一个DataSet数组,但该数组将包含每个元素的空值。那是因为你已经创建了一个数组,但是你还没有创建DataSet对象来填充它。

所以这段代码会抛出一个错误,因为你试图填充Null:

myAdapter.Fill(mySet[j], "tttt");

尝试这样的事情:

mySet[j] = new DataSet();
myAdapter.Fill(mySet[j], "tttt");