如何使不同数据库中的表融合为一张表,使之可在页面上展示和查询?
我有三个数据库,两个SQL Server的,一个Oracle的,里面各有一张我需要的表,三个表中我需要的字段含义类似但名称不同。
我现在需要把这三张表中的四个字段提取出来,融合成一张新表(纵向合并)然后在页面中用GridView展示出来,并且支持对此新表的查询操作,请问各位大哥有什么好办法。
------解决方案--------------------分别连接到3个数据库,分别获取需要的DataTable,再新建一个DataTable,将以上三个的各行数据加入到这个DataTable中去,再进行数据绑定。
------解决方案--------------------哇,呵呵。我从没试过这种方式的集成数据。
你可以试用不同的Command和DataAdapter填充到同一个DataSet中的不同表,然后在DataSet中操作进行数据的合并看看。
------解决方案--------------------与其这样搞,干嘛不把三个库中的数据和起来做成一张表放到一个库中?同步问题?
或者换个思路,在sqlserver中创建链接服务器,然后创建一个视图。
感觉你的这个问题,如果数据量大的话,最好是从数据库来考虑问题,而不要拿程序来折磨自己,条条大路通罗马
------解决方案--------------------
DataTable.Merge
效率应该可以接受
------解决方案--------------------只能一行一行````忽忽忽````你没得选````
------解决方案--------------------这是一个相关参考例子,如何建立新的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();
}