2010-04-29 33 views
1

我有一个查询:查询有两种不同的DSN

<asp:SqlDataSource runat="server" ID="SqlDataSource1" 
ConnectionString="Dsn=Xdb;uid=xxx;pwd=xxxxxxx" ProviderName="System.Data.Odbc" 
SelectCommand="SELECT XReqOrders.LoadNum, XReqOrders.StopSeq, XRecPkgs.DeliveryTime, 
XRecActivity.Address, XReqOrders.OrderOrTripOrRGA, XReqPkgs.Barcode, 
XReqPkgs.Description, XRecPkgs.IsDelivered, XRecPkgs.IsOnStop, YDelInfo.DeliveryDate 
FROM (((XReqOrders INNER JOIN XReqPkgs ON XReqOrders.LoadNumberOrderNumber = XReqPkgs.LoadNumberOrderNumber) 
LEFT JOIN XRecPkgs ON XReqPkgs.Barcode = XRecPkgs.Barcode) 
LEFT JOIN XRecActivity ON XRecPkgs.TranId = XRecActivity.TranId) 
INNER JOIN YDelInfo ON XReqOrders.OMID = YDelInfo.OMID 
ORDER BY XReqOrders.StopSeq, XRecPkgs.DeliveryTime">  
</asp:SqlDataSource> 

的“X”表是从一个数据源和“Y”表是从另一个...但有数据源之间的连接。我似乎无法弄清楚如何输入两个不同的连接字符串来运行。

的ConnectionString = “DSN = XDB; UID = XXX; PWD = XXXXXXX” 的ProviderName = “System.Data.Odbc” 的ConnectionString = “DSN = YDB; UID = XXX; PWD = XXXXXXX” 的ProviderName =“System.Data .Odbc“

这是可能的......我只是想念什么?

回答

3

您不能从两个不同的数据库连接表。根据您使用的数据库引擎,您可以在一个数据库中建立一个指向另一个数据库中的表的“虚拟”或“链接”表,然后以这种方式进行JOIN。否则,您唯一的选择是将您需要加入的表的副本制作到其他数据库中,然后加入到副本中。

1

实际的数据库查询运行在服务器端,而不是客户端,所以没有“快捷”的方法来加入这两个表。

可能的选项:

1)建立一个“链接服务器”(MSSQL来看,不能确定相应的任期将在MySQL或甲骨文的东西,或者即使他们支持)上的一个指向其他服务器的SQL服务器。

2)个人是否单独选择业务对象,然后在您的业务逻辑而不是数据库中进行连接,要么手动循环遍历for循环中的记录,要么使用.NET中的LINQ技术。

+0

这就是我害怕...感谢您的帮助。 – morant 2010-04-29 13:56:56