我有三个数据库,两个SQL Server的,一个Oracle的,里面各有一张我需要的表,三个表中我需要的字段含义类似但名称不同。
我现在需要把这三张表中的四个字段提取出来,融合成一张新表(纵向合并)然后在页面中用GridView展示出来,并且支持对此新表的查询操作,请问各位大哥有什么好办法。

解决方案 »

  1.   

    分别连接到3个数据库,分别获取需要的DataTable,再新建一个DataTable,将以上三个的各行数据加入到这个DataTable中去,再进行数据绑定。
      

  2.   

    哇,呵呵。我从没试过这种方式的集成数据。
    你可以试用不同的Command和DataAdapter填充到同一个DataSet中的不同表,然后在DataSet中操作进行数据的合并看看。
      

  3.   


    同时填充它的列是如何对应的?能按照我的需求对应么,还是select的时候按照顺序
      

  4.   

    关键是如何加入到这个datatable中,一行一行加么?涉及数据量比较大,这样会不会很影响效率
      

  5.   

    与其这样搞,干嘛不把三个库中的数据和起来做成一张表放到一个库中?同步问题?或者换个思路,在sqlserver中创建链接服务器,然后创建一个视图。
    感觉你的这个问题,如果数据量大的话,最好是从数据库来考虑问题,而不要拿程序来折磨自己,条条大路通罗马
      

  6.   

    具体如何假如到这个DataTable中去呢?一行一行的插么?涉及数据量比较大,这样会不会很影响效率?
      

  7.   

    合成一张表如何实现即时查询?SQL Server能建立Oracle的链接服务器么?
      

  8.   

    DataTable.Merge
    效率应该可以接受
      

  9.   

    这是一个相关参考例子,如何建立新的DataTable对象,并用已有数据Order的字段填充它。
    现在需要你把查询出的各个表中的字段填入Datatable即可。    // 绑定购物车
        private void BindShoppingCar(ArrayList orderList)
        {
            // 创建数据表
            DataTable dtShoppingCar = new DataTable();
            dtShoppingCar.Columns.Add(new DataColumn("CommodityID"));
            dtShoppingCar.Columns.Add(new DataColumn("CommodityName"));
            dtShoppingCar.Columns.Add(new DataColumn("UnitPrice", System.Type.GetType("System.Decimal")));
            dtShoppingCar.Columns.Add(new DataColumn("Number", System.Type.GetType("System.Int32")));
            dtShoppingCar.Columns.Add(new DataColumn("Subtotal", System.Type.GetType("System.Decimal"), "UnitPrice * Number"));        float sum = 0;
            // 从订单List中解析数据填充数据表
            for (int i = 0; i < orderList.Count; i++)
            {
                Order order = (Order)orderList[i];
                DataRow row = dtShoppingCar.NewRow();
                row["CommodityID"] = order.CommodityID;
                row["CommodityName"] = order.CommodityName;
                row["UnitPrice"] = order.UnitPrice;
                row["Number"] = order.Number;
                dtShoppingCar.Rows.Add(row);
                sum += float.Parse(row["Subtotal"].ToString());
            }
            // 绑定购物车列表
            gvShoppingCar.DataSource = dtShoppingCar;
            gvShoppingCar.Columns[4].FooterText = sum.ToString();
            gvShoppingCar.DataBind();
        }