连接来自不同数据库的表 (ADO.NET)

Join tables from different databases (ADO.NET)

我有两个数据库,每个数据库都有一个 UDL 连接字符串。我想构建一个连接来自两个数据库的表的查询。

我正在像这样从单个数据库执行查询。

string query = "...";

using (OleDbConnection connection = new OleDbConnection(ConnectionString))
using (OleDbCommand command = new OleDbCommand(query, connection))
{
    int count = command.ExecuteNonQuery();
}

谁能给我举个例子,用连接两个数据库中的表的查询来做同样的事情?

您可以 select 在两个数据表中,然后使用 Linq 连接它们。

var results = from par in dt1.AsEnumerable()
                join chi in dt2.AsEnumerable()
                  on (int)par["ID"] equals (int)chi["ParentID"]
                select new //Here you can leave it that way or use your own object.
                           // select new MyResultObject(){prop1 = x, prop2 = y ...}
                {
                    ParentID = (int)par["ParentID"],
                    ChildID = (int)par["ChildID"],
                    ColA = (string)par["ColA"],
                    ColB = (int)par["ColB"],
                    ColC = (double)chi["ColC"],
                    ColD = (date)chi["ColD"]
                };

希望对您有所帮助:)

因此,让我失望的是假设我需要两个连接字符串。似乎没有任何方法可以在 ADO.NET 中构建涉及两个连接的单个查询。

就我而言,两个数据库都在同一台服务器上。所以只需要一个连接字符串。然后,查询可以包含数据库前缀以识别您指的是哪个数据库。

SELECT [DB1].[dbo].Field1, [DB2].[dbo].Field2 FROM ...