0

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

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!");


            }
4

1 回答 1

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");
于 2013-07-21T23:14:07.670 回答